В этой хранимой процедуре я читал из таблицы стороннего поставщика с именем M_SopInsert
.
SQLScript
— это имя столбца, и каждая запись в этой таблице содержит SQL-запрос, который выполняет UPDATE
, INSERT
или DELETE
.
Я вижу реальный сценарий, когда отлаживаю его с помощью Select (комментарии ниже). Но сам скрипт не выполняется и ошибок я не вижу.
Я попытался жестко закодировать оператор UPDATE
ниже, и он отлично работает.
В чем тут может быть дело?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
declare @sopScript nvarchar(1000)
select SQLScript into #ControlTbl from M_SopInsert
where soptype = @I_vSOPTYPE and sopnumbe = @I_vSOPNUMBE and lnitmseq = @I_vLNITMSEQ
while exists (select * from #ControlTbl)
begin
select top 1 @sopScript = SQLScript
from #ControlTbl
--exec executesql @sopScript = SQLScript
--select @sopScript
--EXEC sp_executesql @sopScript;
--EXEC sp_executesql "update SOPQty set QTYORDER = '17.89' where LNIT = '16'"
exec sp_executesql @sopScript = SQLScript
delete from #ControlTbl where SQLScript = @sopScript
end
drop table #ControlTbl
return (@O_iErrorState)
Msg 2812, Could not find stored procedure 'SQLScript'.
- это весь код, или он заключен вTRY/CATCH
или что-то еще? - person Aaron Bertrand   schedule 27.08.2013