Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Попытка работы с курсорами по типу FoxPro  [new]
Aries
Member

Откуда: Николаев
Сообщений: 238
Пытаюсь работать по аналогии с Фокспро, написал простую ХП

CREATE PROCEDURE RepAkt
@lnIndex ID=0
AS
BEGIN
DECLARE tCurZ CURSOR LOCAL FOR
SELECT tZayavka.*, tPredpr.cName AS cPredpr FROM tZayavka
LEFT OUTER JOIN tPredpr ON tPredpr.iIndex=tZayavka.nPredpr WHERE tZayavka.iIndex=@lnIndex
OPEN tCurZ
SELECT tCurZ.*, tPredpr.cName AS cIzgotov, tFoods.* FROM tCurZ
LEFT OUTER JOIN tPredpr ON tPredpr.iIndex=tCurZ.nIzgotov
INNER JOIN tFoods ON tFoods.iIndex=tCurZ.iIndex
WHERE tCurZ.iIndex=@lnIndex
CLOSE tCurZ
DEALLOCATE tCurZ
END
GO

При попытке выборки новых данных из tCurZ вываливает сообщение
объект не найден. По аналогии с Фоксом, я фоксе делал выборку в курсор
и курсора новую выборку и т.д.
В MSSQL это возможно, или я чего-то не дописал?
Истина где-то там...
31 мар 04, 14:13    [605920]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
По аналогии с Фоксом, я фоксе делал выборку в курсор
и курсора новую выборку и т.д.
В MSSQL это возможно, или я чего-то не дописал?

Для этого подойдут временные таблицы или табличные переменные.
Да, курсор в скуле - это несколько иной объект, чем курсор в фоксе...
31 мар 04, 14:25    [605969]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Glory
Member

Откуда:
Сообщений: 104760
Понятие курсор в TSQL и Foxpro различаются.

Курсор в TSQL - это цикл по результатам запроса.
31 мар 04, 14:25    [605971]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Aries
Member

Откуда: Николаев
Сообщений: 238
Тогда как правильно написать?

Истина где-то там...
31 мар 04, 14:27    [605977]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Glory
Member

Откуда:
Сообщений: 104760
Тогда как правильно написать?

Скажите вначале, что вы хотите получить.
31 мар 04, 14:29    [605981]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Так и напиши
CREATE PROCEDURE RepAkt

@lnIndex ID=0
AS
set nocount on
SELECT tZayavka.*, tPredpr.cName AS cPredpr FROM tZayavka
LEFT OUTER JOIN tPredpr ON tPredpr.iIndex=tZayavka.nPredpr WHERE tZayavka.iIndex=@lnIndex
GO
31 мар 04, 14:30    [605987]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Aries
Member

Откуда: Николаев
Сообщений: 238
Смысл заключается вот в чем
надо было сделать вот такой запрос, но как видно мне надо два поля добавить
с одного справочника, SQL на такое ругается, вот я и решил по алалогии с
фокспро сделать, курсорами. НО...

SELECT tZayavka.*, tPredpr.cName AS cPredpr, tPredpr.cName AS cIzgotov
FROM tZayavka
LEFT OUTER JOIN tPredpr ON tPredpr.iIndex=tZayavka.nPredpr
LEFT OUTER JOIN tPredpr ON tPredpr.iIndex=tZayavka.nIzgotov
WHERE tZayavka.iIndex=@lnIndex

Надеюсь на вашу помощь!
31 мар 04, 14:37    [606016]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
SQL на такое ругается

Текс ругани можно привести?
31 мар 04, 14:40    [606035]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Glory
Member

Откуда:
Сообщений: 104760
SELECT tZayavka.*, a.cName AS cPredpr, b.cName AS cIzgotov

FROM tZayavka
LEFT OUTER JOIN tPredpr a ON a.iIndex=tZayavka.nPredpr
LEFT OUTER JOIN tPredpr b ON b.iIndex=tZayavka.nIzgotov
WHERE tZayavka.iIndex=@lnIndex


PS
И давайте все-таки сообщать согласно Правилам полный оригинальный текст ошибки и версию сервера
31 мар 04, 14:43    [606046]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Aries
Member

Откуда: Николаев
Сообщений: 238
Error 1013: Tables or functions 'tPredpr' and 'tPredpr' haves the same exposed name. Use correlation names to distinguish them.
31 мар 04, 14:46    [606053]     Ответить | Цитировать Сообщить модератору
 Re: Попытка работы с курсорами по типу FoxPro  [new]
Aries
Member

Откуда: Николаев
Сообщений: 238
Спасибо Glory попробую сделать по вашему совету
31 мар 04, 14:48    [606060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить