每个结果集生成一张单据 ,并且写入到一张表里.现在要反向钻取每一张单的明细,也就是生成的结果集 那如何读取之前已经生成单据的单号number?if not object_id(N'Tempdb..#TT') is nulldrop table #TTCreate table #TT( int, varchar(50), nvarchar(22))---上面新增一个临时表TTif not object_id(N'Tempdb..#T') is nulldrop table #TGoCreate table #T( int, nvarchar(22))Insert #Tselect 1,N'张三' union allselect 2,N'李四' union allselect 3,N'王五' union allselect 4,N'赵六'Go--测试数据结束--select*from #tdeclare @INum char(4)declare @Num varchar(15)declare @DifAmount moneySET @INum=RIGHT(CAST(2022*100+1 AS CHAR(6)),4)----创建一个游标declare my_cursor cursor for --my_cursor为游标的名称,随便起select id,name from #T --这是游标my_cursor的值,这里随便发挥看业务场景--打开游标open my_cursor --没什么好说的--变量declare @id int --声明变量 ‘declare’为声明变量 ‘@name’为变量名称 后面为变量类型declare @name varchar(50) --这里是两个变量用来接收游标的值--循环游标fetch next from my_cursor into @id,@name --获取my_cursor的下一条数据,其中为两个字段分别赋值给@id,@namewhile @@FETCH_STATUS=0 --假如检索到了数据继续执行beginprint(@name) --print()打印变量 随便发挥-----将游标中满足条件的数据写入临时表TT IF EXISTS (SELECT 1 FROM #T WHERE ISNULL(ID,0)<>0) BEGIN SELECT @Num='22010634' --ISNULL(MAX(RTRIM(NUMBER)),'') FROM Fch (HOLDLOCK) WHERE NUMBER LIKE RTRIM(@INum)+'%' --获取单号最大值 IF (@Num='') SET @Num=RTRIM(@INum)+'0001' ELSE SET @Num=CAST(CAST(LEFT(@Num,8) AS INT)+1 AS VARCHAR(15)) INSERT INTO #TT (id, NUMBER, name) VALUES (@id, @Num, @name) ENDfetch next from my_cursor into @id,@name --获取下一条数据并赋值给变量end--关闭释放游标close my_cursordeallocate my_cursor---从临时表TT中取数SELECT * FROM #TT