Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Skulll Member Откуда: Чехия Сообщений: 487 |
Всем привет! Есть функция EXEC @return_value = [CADIS_PROC].[SPDM_MP1_SOURCE437_REALIGN_REALIGNNULL] @OldCADISId = @cadisid, @CADISRowId = @rowid, @ChangedBy = N'BASE\еее66', @ChangedDate = @updated_date, @Comment = N'reset BBG Cadis Id Assignment' Названия функции заранее неизвестно Собираю и вызываю функци вот так SET @SQL = '@return_value_par = ' + @PROC_NAME + ' @OldCADISId = @cadisid_par, @CADISRowId = @rowid_par, @ChangedBy = suser_name(), @ChangedDate = @updated_date_par, @Comment = ''reset BBG Cadis Id Assignment'''; exec sp_executesql @SQL '@return_value_par int OUTPUT, @cadisid_par int, @rowid_par int, @updated_date_par datetime', @cadisid_par = @cadisid, @rowid_par=@rowid, @updated_date_par=@updated_date, @return_value_par = @return_value OUTPUT Но, получаю ошибку Msg 214, Level 16, State 2, Procedure sp_executesql, Line 1 [Batch Start Line 0] Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. Раньше с Ораклом работал, знаю как там вызвать правильно фукнцию с параметрами, в том числе и возвращаемыми, но как ту? Подскажите пожалуйста. |
9 фев 17, 14:48 [20196975] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Вам же красным по-белому в тексте ошибки все написали. Или ораклоидами не принято текст ошибок читать? |
9 фев 17, 14:49 [20196985] Ответить | Цитировать Сообщить модератору |
Skulll Member Откуда: Чехия Сообщений: 487 |
Извиняюсь, ошибка выле была связана с NVARCHAR, сейчас ошибка така Incorrect syntax near '@return_value_par int OUTPUT, @cadisid_par int, @rowid_par int, @updated_date_par datetime'. |
9 фев 17, 14:51 [20196987] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Еще не понятно, зачем здесь динамика. Вместо имени процедуры в EXECUTE можно подставить переменную с именем. |
9 фев 17, 14:51 [20196990] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Skulll,exec sp_executesql @SQL, '@return_value_par int OUTPUT, @cadisid_par int, @rowid_par int, @updated_date_par datetime', @cadisid_par = @cadisid, @rowid_par=@rowid, @updated_date_par=@updated_date, @return_value_par = @return_value OUTPUT |
9 фев 17, 14:52 [20196995] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
SET @SQL = 'EXEC @return_value_par = ' + @PROC_NAME + ' @OldCADISId = @cadisid_par, @CADISRowId = @rowid_par, @ChangedBy = suser_name(), @ChangedDate = @updated_date_par, @Comment = ''reset BBG Cadis Id Assignment'''; |
9 фев 17, 14:53 [20197002] Ответить | Цитировать Сообщить модератору |
Skulll Member Откуда: Чехия Сообщений: 487 |
Спасибо всем, работает!! В итоге - добавил EXEC в текст процедуры, и добавил везде NVARCHAR |
9 фев 17, 15:03 [20197050] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
exec @return_value = @PROC_NAME @cadisid_par, @rowid_par, suser_name(), @updated_date_par, 'reset BBG Cadis Id Assignment'; |
||
9 фев 17, 15:04 [20197058] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Да ладно те, чувак учится. |
||||
9 фев 17, 15:25 [20197172] Ответить | Цитировать Сообщить модератору |
Skulll Member Откуда: Чехия Сообщений: 487 |
Спасибо, так тоже работает! и так намного лаконичнее |
||||
9 фев 17, 16:40 [20197563] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
|
||||
9 фев 17, 18:37 [20198058] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |