我尝试过一些来自互联网的解决方案,但它们对我不起作用。
我的任务是将存储过程的输出放到表中。数据通过循环插入到游标中。我正在创建临时表来存储和显示数据。
我的代码:
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;
我有两个问题:
答案 0 :(得分:1)
[##test_temp_table]
和[test_temp_table]
是两个不同的表格。第一个是全局临时表,第二个是用户表。我相信你想用全局临时表替换用户表,即用[test_temp_table]
替换对象[##test_temp_table]
。或相反亦然。最后,您必须确保查询正确的表格。