| -- 定义表变量 |
| DECLARE @TempTable1 TABLE (Col1 INT, Col2 VARCHAR(100)); |
| DECLARE @TempTable2 TABLE (ColA INT, ColB VARCHAR(100)); |
| |
| -- 假设有一个全局临时表或某种方式来捕获所有结果集 |
| -- 这里简化为直接插入到临时表(实际中可能需要更复杂处理) |
| DECLARE @AllResults TABLE (ID INT IDENTITY(1,1), DataCol1 INT, DataCol2 VARCHAR(100), DataColA INT, DataColB VARCHAR(100)); |
| |
| -- 假设你已经有方法将存储过程结果插入到 @AllResults |
| -- 这里省略该步骤 |
| |
| -- 使用游标来分配数据 |
| DECLARE cur CURSOR FOR |
| SELECT DataCol1, DataCol2, DataColA, DataColB |
| FROM @AllResults; |
| |
| OPEN cur; |
| |
| DECLARE @DataCol1 INT, @DataCol2 VARCHAR(100), @DataColA INT, @DataColB VARCHAR(100); |
| |
| FETCH NEXT FROM cur INTO @DataCol1, @DataCol2, @DataColA, @DataColB; |
| |
| WHILE @@FETCH_STATUS = 0 |
| BEGIN |
| -- 假设有逻辑来确定哪一行属于哪个表 |
| -- 这里简化处理,假设按行交替 |
| IF (@@FETCH_STATUS % 2 = 1) |
| BEGIN |
| INSERT INTO @TempTable1 (Col1, Col2) VALUES (@DataCol1, @DataCol2); |
| END |
| ELSE |
| BEGIN |
| INSERT INTO @TempTable2 (ColA, ColB) VALUES (@DataColA, @DataColB); |
| END |
| |
| FETCH NEXT FROM cur INTO @DataCol1, @DataCol2, @DataColA, @DataColB; |
| END |
| |
| CLOSE cur; |
| DEALLOCATE cur; |
| |
| -- 现在 @TempTable1 和 @TempTable2 包含了从存储过程获取的数据 |