У меня есть временная таблица с именем, как #temp
с 2-мя столбцы:Использования «Exec» для обновления таблицы
clientID (varchar),
result (int)
Я просто хочу, чтобы петля в нем и проверить ClientId с хранимой процедурой, которая принимает 2 параметр VARCHAR и возвращает 0 или 1.
Я закодированы:
update #temp set result=exec sp_x 'clientID' '@clientID'
clientID
это имя столбца #temp
.
@clientID
происходит от параметра основного SP
Он приходит с предупреждением:
Неправильный синтаксис около «Exec» ключевых слов.
Итак, что делать?
Заранее спасибо ...
Вы не можете использовать хранимую процедуру в качестве значения для оператора обновления. И честно, если ваша хранимая процедура возвращает такое значение, что вы делаете это неправильно. Возврат из процедуры предназначен для указания статуса выполнения, а не возврата значения. Если вы хотите вернуть значение, вы должны использовать выходной параметр. У меня такое чувство, что весь этот процесс можно значительно улучшить, изменив эту процедуру и полностью избавившись от цикла. Если вы можете опубликовать несколько подробностей, я помогу вам разобраться в этом. –
Это вызов SP i: 'create procedure [dbo] .sp_CrossCheck2 (@clientID varchar (16), @mainID varchar (16)) AS declare @sql nvarchar (max); declare @sqlMain nvarchar (max); объявить @Params nvarchar (макс.); set @sql = N'select @sqlMainOUT = sql из sql где clientID = '+ @ clientID SET @Params = N' @ sqlMainOUT nvarchar (max) OUTPUT '; EXEC sp_executesql @sql, @Params, @ sqlMainOUT = @ sqlMain OUTPUT; создать таблицу #temp (ClientId VARCHAR (16), результат INT по умолчанию 0) вставки в #temp ехес sp_executesql @sqlMain если (@mainID в (выберите ClientId из #temp)) выберите 1 еще выбрать 0' –
Извините за формат. Я любопытный новичок. Когда я выполняю этот SP в запросе, он приходит с результатом 0 или 1. Так что вы думаете? Спасибо заранее .... –