Можно ли выполнить хранимую процедуру над набором без использования курсора?
Если вы используете только tsql SQL Server 2005 или новее, не sql-query заботитесь об обратной совместимости tsql и можете преобразовать свой mssql код в определяемую пользователем transact-sql функцию (а не в сохраненную sql-query процедуру), тогда вы можете transact-sql использовать новый "CROSS" APPLY sql », который использует синтаксис, очень transact-sql похожий на ваш. Я нашел here короткое sql-query вступление (конечно, вы также mssql можете прочитать BOL и MSDN)
Предположим, ваш sql-query SP возвращает одно значение ms-sql-server с именем out_int, ваш пример можно transact-sql переписать как:
SELECT T.id, UDF.out_int
FROM
Table1 T
CROSS APPLY
dbo.fn_My_UDF(T.id) AS UDF
Это будет tsql извлекать каждый «идентификатор» из sql-syntax Table1 и использовать его ms-sql-server для вызова fn_My_UDF, результат stored-procedures которого появится в окончательном transact-sql наборе результатов помимо sql-statement исходного параметра.
Вариант ms-sql-server CROSS APPLY - OUTER APPLY. Они sql-statement являются эквивалентами INNER stored-procedure JOIN и LEFT JOIN, но работают sql-srever над объединением таблицы sql-select и UDF (и одновременным вызовом stored-procedure второго).
Если вы должны (по явному sql-query указанию остроконечного босса) использовать tsql SP, что ж - неудача! Вам sqlselect придется придерживаться курсоров tsql или попробовать немного обмануть: изменить sql-query код на UDF и создать SP-оболочки: D.
sql
sql-server
tsql
stored-procedures
Можно ли выполнить хранимую процедуру над набором без использования курсора?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.