必须在nocommerce 4.3中声明存储过程的标量变量错误



我想在管理产品列表中搜索GTIN选项。因此,我在ProductLoadAllPaged存储过程中提供GTIN值。现在,当我从当时的产品列表中搜索GTIN值时,抛出数据表错误,并从控制台应用程序中获得消息System.Data.SqlClient.SqlException(0x80131904(:必须声明标量变量"@GTIN">

这是存储过程添加的代码,

ALTER PROCEDURE [dbo].[ProductLoadAllPaged]
(
@GTIN nvarchar(50) = null--AWAZ
)
AS
BEGIN   
...........

--SKU (exact match)
IF @SearchSku = 1
BEGIN
SET @sql = @sql + 'OR p.[Sku] = @OriginalKeywords '
END
--NEW ADDED CODE FOR GTIN SEARCH
IF @GTIN is not null
BEGIN
SET @sql = @sql + 'AND p.Gtin = @GTIN'
END
--localized product name
SET @sql = @sql + '
UNION
SELECT lp.EntityId
FROM LocalizedProperty lp with (NOLOCK)
WHERE
lp.LocaleKeyGroup = N''Product''
AND lp.LanguageId = ' + ISNULL(CAST(@LanguageId AS nvarchar(max)), '0') + '
AND ( (lp.LocaleKey = N''Name'''

..........
END

在存储过程中更改这行代码:

EXEC sp_executesql @sql, N'@Keywords nvarchar(4000), @OriginalKeywords nvarchar(4000)', @Keywords, @OriginalKeywords

对此:

EXEC sp_executesql @sql, N'@Keywords nvarchar(4000), @OriginalKeywords nvarchar(4000), @GTIN nvarchar(50)', @Keywords, @OriginalKeywords, @GTIN

这将在执行动态SQL查询时添加新参数。

最新更新