【问题标题】:Temp Table as Output Parameter in Stored Procedure临时表作为存储过程中的输出参数
【发布时间】:2014-09-18 07:23:54
【问题描述】:

我想知道是否有可能以及如何在存储过程中使用临时表作为输出参数。我知道普通表不能用 UPDATE 修改,并且只是 READONLY 表,所以我想到了使用临时表。但我不明白如何将它们传递给存储过程以及如何将它们作为输出:

CREATE TABLE #tableBER (ID INT NOT NULL IDENTITY PRIMARY KEY, VAL INT NOT NULL DEFAULT 0);
CREATE TABLE #tableRL (ID INT NOT NULL IDENTITY PRIMARY KEY, VAL INT NOT NULL DEFAULT 0);

ALTER PROCEDURE [dbo].[getFound] 
   @ber #tableBER OUTPUT,
   @rl #tableRL OUTPUT,
AS
BEGIN
  ...
  UPDATE @ber ... --UPDATE
  UPDATE @rl  ...

  SELECT @ber; -- RETURN THE TWO TABLES
  SELECT @rl;
END;

这样可以吗?谢谢!

【问题讨论】:

    标签: sql stored-procedures


    【解决方案1】:

    存储过程可以引用和使用在外部范围内创建的临时表。无需将它们标记为参数,只需创建表,调用存储过程,然后检查内容即可:

    create procedure DoStuff
    as
        insert into #TTT (ID) values (1),(2),(3)
    

    及用法:

    create table #TTT(ID int not null)
    exec DoStuff
    select * from #TTT
    

    结果:

    ID
    -----------
    1
    2
    3
    

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-04-05
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多