Используйте хранимую процедуру как функцию - PullRequest
0 голосов
/ 13 мая 2011

Мне нужно иметь дело с именем таблицы как с переменной. Затем я должен использовать динамический sql и, следовательно, я должен использовать хранимую процедуру. Но проблема в том, как я могу использовать хранимую процедуру как пользовательскую функцию sql.

например: выберите col1, (Exec sp1 param1, 'tbName') из таблицы1

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Наконец, я изменил свой дизайн и использую динамический SQL на одном верхнем уровне.

0 голосов
/ 15 мая 2011

Хранимые процедуры могут возвращать скалярные значения через выходные параметры. Вот пример (из здесь ).

Создайте сохраненную процедуру следующим образом:

CREATE PROCEDURE _4P_test 
  @intInput int,
  @intOutput int OUTPUT
AS
set @intOutput = @intInput + 1 
go

Назовите это так:

declare @intResult int
exec _4P_test 3 ,@intResult OUT
select @intResult

Однако вы должны попытаться спроектировать свою систему так, чтобы вам не приходилось использовать динамический SQL так, как вы описали.

0 голосов
/ 13 мая 2011

Это будет возможно в sql server denali, который вводит новые ключевые слова "WITH RESULTSET".

Альтернативой в текущих версиях sql является передача временной таблицы в хранимую процедуру

...