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

Откуда:
Сообщений: 243
Есть в базе некая хранимая процедурка с таким интерфейсом:
PROCEDURE [dbo].[REFERENTIAL_FIND] @TypeID VarChar(64), @RecID VarChar(16), @Res VarChar(1) OUTPUT AS
BEGIN
...
END


Я пишу скрипт на вызов этой процедурки в курсоре, когда последовательно ее параметрам будут присваиваться значения и эта процедурка будет выполняться. Пишу так:
declare @prmDef nvarchar(128), @name nvarchar(64)
declare @Result nvarchar(1)
declare @recid_ nvarchar(16)

set @prmDef = N'@TypeID VarChar(64), @RecID VarChar(16), @Res VarChar(1) OUTPUT';
set @name = 'some text'
set @recid_ = '1234567891234567'

exec sp_executesql N'REFERENTIAL_FIND', @prmDef, @TypeID = @name, @RecID = @recid_, @Res = @Result output

При выполнении данного кода получаю ошибку:
Msg 201, Level 16, State 4, Procedure REFERENTIAL_FIND, Line 0
Procedure or function 'REFERENTIAL_FIND' expects parameter '@TypeID', which was not supplied.

Не могу понять, в чем тут дело, так как єтому параметру ведь присваивается значение @name.
В чем я не прав? Подскажите.
21 окт 14, 19:40    [16739517]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql вызов хранимой процедуры с параметрами  [new]
Glory
Member

Откуда:
Сообщений: 104751
exec dbo.REFERENTIAL_FIND @TypeID = @name, @RecID = @recid_, @Res = @Result output
21 окт 14, 20:02    [16739592]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql вызов хранимой процедуры с параметрами  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
harisma,

Зачем Вам для вызова хп еще и sp_executesql?! Чем не устраивает:


EXEC [dbo].[REFERENTIAL_FIND] @TypeID = @name, @RecID = @recid_, @Res = @Result output


?
21 окт 14, 20:02    [16739594]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql вызов хранимой процедуры с параметрами  [new]
o-o
Guest
harisma


exec sp_executesql N'REFERENTIAL_FIND', @prmDef, @TypeID = @name, @RecID = @recid_, @Res = @Result output


В чем я не прав? Подскажите.

так вы попробуйте свой statement(красным) запустить без sp_executesql
то же самое и получите. параметры-то кто будет передавать?

REFERENTIAL_FIND -- = exec dbo.REFERENTIAL_FIND

Msg 201, Level 16, State 4, Procedure REFERENTIAL_FIND, Line 0
Procedure or function 'REFERENTIAL_FIND' expects parameter '@TypeID', which was not supplied.


извращаться, так по-полной:
exec sp_executesql N'exec dbo.REFERENTIAL_FIND @TypeID = @TypeID, @RecID = @RecID, @Res = @Res output ', @prmDef, @TypeID = @name, @RecID = @recid_, @Res = @Result output
select @Result;
21 окт 14, 22:15    [16740116]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql вызов хранимой процедуры с параметрами  [new]
harisma
Member

Откуда:
Сообщений: 243
Спасибо. Все теперь работает :)
22 окт 14, 14:06    [16743100]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить