这是我的存储过程代码。当我使用所有必需的参数运行此代码时,出现错误
列名或提供的值数与表定义不符
任何人都可以向我提示此SQL的问题是什么?
注意:我正在使用Microsoft SQL Server。
USE [TestDataBase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetProductsByKeyword]
@Keyword NVARCHAR(255) = NULL,
@MinPrice FLOAT = NULL,
@MaxPrice FLOAT = NULL,
@MaxNumberOfSales FLOAT = NULL,
@MinNumberOfSales FLOAT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ItemsTable TABLE (title NVARCHAR(255))
DECLARE @Query NVARCHAR(MAX)
SET @Query='select top 500 * from Products where ID in (SELECT TOP 10000 CAST(KEY_TBL.[KEY] AS BIGINT) FROM CONTAINSTABLE (Products, Title, '+char(39)+@Keyword++char(39)+') AS KEY_TBL ORDER BY RANK DESC)'
PRINT @Query
INSERT INTO @ItemsTable
EXEC sp_Executesql @Query
SELECT * FROM @ItemsTable
SET NOCOUNT OFF;
END;
答案 0 :(得分:2)
您的“ select top 500 * ...”查询似乎返回的表列无法处理的列数更多。要么将*更改为一列,要么更改表变量定义以覆盖查询的输出