开发者社区> 问答> 正文

SQL Server:必须声明标量变量

我需要声明全局变量作为计数器

DECLARE @counter int
SET @counter = 0;

然后使用存储过程,但是它总是告诉我@counter必须将其声明为标量变量

CREATE OR ALTER PROCEDURE proc_counter_type 
     @type NVARCHAR(15), 
     @dateFirst DATE,
     @dateSecond DATE
AS
    SELECT @counter = COUNT(title_id)
    FROM books
    WHERE type = @type AND (datum BETWEEN @dateFirst AND @dateSecond)

展开
收起
祖安文状元 2020-01-04 15:20:13 1003 0
1 条回答
写回答
取消 提交回答
  • 您需要添加@Counter作为OUTPUT参数:

    CREATE OR ALTER PROCEDURE proc_counter_type @type nvarchar(15), @dateFirst date, @dateSecond date, @Counter int OUTPUT 
    AS
    BEGIN
        SELECT @counter = COUNT(title_id)
        FROM books
        WHERE type = @type
          AND (datum BETWEEN @dateFirst AND @dateSecond);
    END;
    
    

    然后,您将SP执行为:

    DECLARE @counter int;
    --Other Params
    EXEC proc_counter_type, @Type, @dateFirst, @dateSecond, @Counter OUTPUT;
    
    PRINT @Counter;
    
    2020-01-04 15:20:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载