我有一个存储在包含参数名称的表中的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 CODENUMBER=@SKU)
BEGIN
DECLARE @SQLQUERY AS NVARCHAR(50)
SET @SQLQUERY=(SELECT SQLUPDATE FROM MASS_UPDATE WHERE DROPDOWNLABEL=@FIELD)
EXEC SP_EXECUTESQL @SQLQUERY
END
这是表中的SQL查询
update inventory_master_flex set departmentid=@value where codenumber=@sku
我尝试用实际参数替换,但这不起作用。
SELECT REPLACE(REPLACE(@SQLQUERY,'@VALUE',@VALUE),'@SKU',@SKU)
-- 50 is too short for sure; you may try 1000 or different number
DECLARE @SQLQUERY AS NVARCHAR(MAX)
-- for debug purpose
PRINT @SQLQUERY
-- params
EXEC SP_EXECUTESQL @SQLQUERY, N'@Value NVARCHAR(50), @sku NVARCHAR(50)`, @Value, @sku
对于带引号的字符串,REPLACE效果不好,以此类推,这会阻碍@sqlquery代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句