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

Откуда: Москва
Сообщений: 118
Есть такая програмулька
---------------------------------------------------------------------------
ALTER PROCEDURE Opa
@UserX nvarchar(50) -- Пользователь выполняющий операцию
AS
DECLARE @FNomer nvarchar(200)
DECLARE TCursor CURSOR

FOR
SELECT dbo.tbl_Price_Up.Название, dbo.tbl_Price_UpDown.Номер, dbo.tbl_Price_UpDown.Наименование, dbo.tbl_Price_UpDown.Марка,
dbo.tbl_Price_UpDown.Авто, dbo.tbl_Price_UpDown.ЦенаЗХД, dbo.tbl_Price_UpDown.Выбор, dbo.tbl_Price_UpDown.ВыборПол,
dbo.tbl_Price_UpDown.IDDx
FROM dbo.tbl_Price_Up INNER JOIN
dbo.tbl_Price_UpDown ON dbo.tbl_Price_Up.ИНН = dbo.tbl_Price_UpDown.ИНН
WHERE dbo.tbl_Price_UpDown.ВыборПол = @UserX AND dbo.tbl_Price_UpDown.Выбор = 1
OPEN TCursor

FETCH NEXT FROM TCursor
WHILE (@@FETCH_STATUS = 0)
begin

---SET @FNomer = RTRIM(Номер) /*Не работает*/
/* как в этом цикле присвоить переменной FNomer
значение столбца НОМЕР */


BREAK
FETCH NEXT FROM TCursor

end
CLOSE TCursor
DEALLOCATE TCursor
/*
INSERT INTO tbl_Zakupka_Global
()
*/
RETURN

---------------------------------------------------------------------------

Заранее бесконечно благодарен уже 2 часа на смарку
PS Не бейте, только учусь
14 май 05, 12:40    [1539831]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
tedy
Member

Откуда:
Сообщений: 83
FETCH NEXT FROM TCursor INTO @FNomer
14 май 05, 12:44    [1539851]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
HOTLelick
Member

Откуда: Москва
Сообщений: 118
А если переменных несколько
извините, просто хочу понять как все ето работает
Заранее спасибо
14 май 05, 12:46    [1539863]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
Трусняки Программизда02
Member [заблокирован]

Откуда: Толстая попа Программизда 02
Сообщений: 955
HOTLelick
А если переменных несколько
извините, просто хочу понять как все ето работает
Заранее спасибо


FETCH NEXT FROM TCursor INTO @FNomer1,@FNomer2...,@FNomerN
14 май 05, 12:47    [1539868]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
...
FOR
SELECT dbo.tbl_Price_UpDown.Номер
FROM dbo.tbl_Price_Up INNER JOIN
dbo.tbl_Price_UpDown ON dbo.tbl_Price_Up.ИНН = dbo.tbl_Price_UpDown.ИНН
WHERE dbo.tbl_Price_UpDown.ВыборПол = @UserX AND dbo.tbl_Price_UpDown.Выбор = 1
OPEN TCursor

FETCH NEXT FROM TCursor into @FNomer
WHILE (@@FETCH_STATUS = 0)
begin
...
FETCH NEXT FROM TCursor into @FNomer
end
CLOSE TCursor
DEALLOCATE TCursor
...
14 май 05, 12:47    [1539871]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
HOTLelick
А если переменных несколько

HELP-> DECLARE CURSOR->Examples->B. Use nested cursors to produce report output

Пример, где выбираются несколько значений.
14 май 05, 12:48    [1539878]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
ChA
Member

Откуда: Москва
Сообщений: 11126
Для каждого поля в списке полей SELECT по которому сделан курсор надо объявлять переменные и присваивать им при каждом FETCH. Посмотрите BOL, DECLARE CURSOR, примеры...
14 май 05, 12:49    [1539882]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
HOTLelick
Member

Откуда: Москва
Сообщений: 118
Мужики, всем огромное спасибо.
А может кто-нибудь посоветует умную книжку
14 май 05, 12:49    [1539885]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
AVVS
Member

Откуда:
Сообщений: 335
По присваиванию:

Есть SELECT со списком столбцов.
Если все значения будут использовать внутри цикла с курсором, тогда
необходимо использовать конструкцию типа:


FETCH NEXT FROM TCursor 
INTO ..,@FNumber...

При этом порядок, количество переменных в предложении INTO и их типы должны соответствовать порядку, количеству и типам столбцов, перечисленных в SELECT при определении курсора.

BOL:

...
INTO @variable_name[,...n]

Allows data from the columns of a fetch to be placed into local variables. Each variable in the list, from left to right, is associated with the corresponding column in the cursor result set. The data type of each variable must either match or be a supported implicit conversion of the data type of the corresponding result set column. The number of variables must match the number of columns in the cursor select list.


Из текста процедуры непонятно назначение BREAK внутри цикла. Обычно эта штука используется в сочетании с IF (если необходимо преврать цикл по какому-то условию.
14 май 05, 12:50    [1539888]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
HOTLelick
А может кто-нибудь посоветует умную книжку

https://www.sql.ru/docs/mssql/tsql_ref/index.shtml
14 май 05, 12:54    [1539903]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
HOTLelick
Member

Откуда: Москва
Сообщений: 118
Я сам дергул книжку из Инета в HTML 200мб на ангийском
могу позипить и всем желающим, пишите на мыло
polaris-group@hotmail.ru
14 май 05, 13:01    [1539927]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL и сохраненним процедурам  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10752
Блог
Внимательно прочитайте пункт 3!
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=127456
14 май 05, 17:31    [1541028]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить