将SQL Server存储过程输出结果提取到表

时间:2015-05-14 17:02:17

标签: sql sql-server

我尝试过一些来自互联网的解决方案,但它们对我不起作用。

我的任务是将存储过程的输出放到表中。数据通过循环插入到游标中。我正在创建临时表来存储和显示数据。

我的代码:

ALTER procedure [dbo].[usp_Test]
AS
   SET NOCOUNT ON;

   declare @caseId int;
   declare  @CHG_ID int;
   declare @HEAR_ID int;

   SET @CHG_ID = 1
   set @testid = 1;

   DECLARE db_cursor CURSOR FOR 
     SELECT C_CASE_ID
     FROM table1     // tHERE WILL BE MULTIPLE CASEIDS    

   -- here I am trying to delete the temporary table, but it does not work
   IF OBJECT_ID('tempdb..##test_temp_table') IS NOT NULL 
      TRUNCATE TABLE ##test_temp_table
   ELSE
      CREATE TABLE test_temp_table(HEAR_ID int)

   OPEN db_cursor 

   FETCH NEXT FROM db_cursor INTO @caseId 

   WHILE @@FETCH_STATUS = 0   
   BEGIN    
      insert into test_temp_table 
        EXEC STOREDPROCTEST2 @caseId, 1, @HEAR_ID OUTPUT;

      -- LOOP THROUGH THE CURSOR TO GET ALL     CASE IDS
      FETCH NEXT FROM db_cursor INTO @caseId 

      SELECT HEAR_ID FROM test_temp_table;
   END   

   CLOSE db_cursor  
   DEALLOCATE db_cursor;

我有两个问题:

  1. 我无法删除临时表
  2. 我没有看到临时表的任何输出

1 个答案:

答案 0 :(得分:1)

[##test_temp_table][test_temp_table]是两个不同的表格。第一个是全局临时表,第二个是用户表。我相信你想用全局临时表替换用户表,即用[test_temp_table]替换对象[##test_temp_table]。或相反亦然。最后,您必须确保查询正确的表格。