列名或数字值与存储过程中的错误不匹配

时间:2019-07-08 16:20:29

标签: sql sql-server stored-procedures

这是我的存储过程代码。当我使用所有必需的参数运行此代码时,出现错误

  

列名或提供的值数与表定义不符

任何人都可以向我提示此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;

1 个答案:

答案 0 :(得分:2)

您的“ select top 500 * ...”查询似乎返回的表列无法处理的列数更多。要么将*更改为一列,要么更改表变量定义以覆盖查询的输出