У меня есть SQL-запрос, хранящийся в таблице, содержащей имена параметров. Мне нужно знать, как правильно его выполнять в хранимой процедуре.Динамический SQL с параметрами
Это мой SQL-код в процедуре
PROCEDURE [spMassUpdateSKUs]
@SKU AS NVARCHAR(20)
,@FIELD AS NVARCHAR(50)
,@VALUE AS NVARCHAR(50)
,@RESULT as Int = Null Output
AS
BEGIN
IF EXISTS(SELECT CODENUMBER FROM INVENTORY_MASTER WHERE [email protected])
BEGIN
DECLARE @SQLQUERY AS NVARCHAR(50)
SET @SQLQUERY=(SELECT SQLUPDATE FROM MASS_UPDATE WHERE [email protected])
EXEC SP_EXECUTESQL @SQLQUERY
END
и это SQL запрос из таблицы
update inventory_master_flex set [email protected] where [email protected]
Я попытался заменить с реальными параметрами, но этой doen't работы ,
SELECT REPLACE(REPLACE(@SQLQUERY,'@VALUE',@VALUE),'@SKU',@SKU)
Когда вы выполнили этот «ВЫБРАТЬ ЗАМЕНИТЬ (ЗАМЕНИТЬ (@SQLQUERY,« @ VALUE », @ VALUE),« @ SKU », @ SKU), как выглядел запрос на обновление? Это выглядело правильно или нет? Что вы имеете в виду, это не работает? ** Если индексом и кодовым номером являются строки, вам нужны одинарные кавычки. ** –
Капитализация отличается. По умолчанию SQL Server не учитывает регистр, но ваша таблица, база данных или сервер могут быть настроены по-разному. –
Ваши значения не будут указаны с вашим текущим кодом 'REPLACE'. Вы должны правильно передать параметры, используя [sp_executesql] (https://technet.microsoft.com/en-us/library/ms175170.aspx) – Blorgbeard