Я пытаюсь вызвать хранимую процедуру (с выходной переменной) с использованием sp_executesql
, но в рамках другой хранимой процедуры. Я написал следующее, но до сих пор не в состоянии получить trhough, что означает, что ошибкаВложенный sp_executesql не работает с выходной переменной
Это будет вызываться из кода WebService:
exec sp1 'obj1',@params
Здесь obj
и params
имеют nvarchar(max)
Определение sp1
является :
Alter procedure [dbo].[sp1 ]
@procname nvarchar(max),
@params nvarchar(max)
as
declare @temp varchar(15)
if @procname = 'obj1'
begin
set @params = @params + ',@Newval varchar(15) output'
EXEC sp_executesql @sp2,@params,@[email protected] OUTPUT
end
Определение sp2
:
Здесь я возвращаюсь @Newval
Ошибка я получаю:
Msg 102, Level 15, State 1, Line 1
Неправильный синтаксис около ''.
Кроме того, в 2 вместо exec
заявления, я попытался следующее:
EXEC sp_executesql @sp2, @params, @temp OUTPUT;
Результаты в одной и той же ошибки.
set @sql='sp2,' + ' @params ' + ',@params,@temp OUTPUT'
EXEC sp_executesql (@sql)
Также приводит к такой же ошибке.
Мне нужен этот динамический выбор хранимых процедур в sp1, а params - строка параметров и их значений, некоторые из них являются varchar и встроены в формат '' value '', но эта строка прекрасна, поскольку я могу для вызова базового sp2 с этим.
Дополнительная информация, это помогает.
EXEC sp_executesql @sp2,@params,@[email protected] OUTPUT
в этом @params - комбинация ключей и пар vlaue для окончательного sp. что-то вроде:
«@ ключом1 =„а“, @ key2 =„б“»
и так далее, я не могу с @params предопределены, но она динамична и она работает штраф, когда я запускаю его с
exec (@sql)
Формат в то время как все названия, PARAMS встроены в @sql
Спасибо, но @Params является ни null, ни '' :( – user3792812
Если я удалю выходная переменная. Я все еще могу вызвать sp2 со следующим объявлением @sql nvarchar (max); set @ sql = 'sp2' + '' + @params; exec (@sql), но это просто побеждает цель получения выходной переменной, а sp_executesql в этом случае не используется. Пожалуйста, подумайте, что я использую SQL Server 2005, если это помогает – user3792812
Что вы отправляете в «@params» из php? – gofr1