繁体   English   中英

如何编写将选择语句作为输入参数的存储过程?

[英]How to write stored procedure passing select statement as input parameter?

我有一个存储过程,输出一个选择语句,如下所示:

select case when count(*) > 10 then ''A1'' else ''B1'' end as id, name, address from database.dbo.student

现在,我想编写一个存储过程,将一个select语句作为字符串输入,并返回所有上述输出。 我不确定在哪里分配输出变量。

ALTER PROCEDURE dbo.selectAttributes
    @select_statement Nvarchar(MAX),
    @id Nvarchar(255) OUT,
    @name nvarchar(255) OUT,
    @address nvarchar(255) OUT
AS 
BEGIN 
    DECLARE @query nvarchar(MAX)

    SET @query = @select_statement

    EXEC sp_executesql @query, 
                       N'@select_statement Nvarchar(MAX), 
                       @idOUT Nvarchar(255) OUTPUT,
                       @nameOUT nvarchar(255) OUTPUT,
                       @addressOUT nvarchar(255) OUTPUT',
                       @select_statement, @id OUTPUT, @name OUTPUT, @address OUTPUT
END

我认为您很亲密:

ALTER PROCEDURE dbo.selectAttributes (
    @select_statement Nvarchar(MAX),
    @id Nvarchar(255) OUTPUT,
    @name nvarchar(255) OUTPUT,
    @address nvarchar(255) OUTPUT
) AS 
BEGIN 
    EXEC sp_executesql @select_statement,
         N'@id Nvarchar(255) OUTPUT, @name nvarchar(255) OUTPUT, @address nvarchar(255) OUTPUT',
           @id = @id OUTPUT,
           @name = @name OUTPUT,
           @address = @address OUTPUT
END;

换一种说法:

  • 您必须将OUTPUT关键字放在任何地方。
  • 查询字符串不作为参数输入。
  • 我没有重命名参数,但是如果您重命名,则必须在某个地方声明它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM