簡體   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