如何修改SQL Server游标代码,实现打印游标数据而非仅插入?
在SQL Server游标中实现控制台打印数据的方法
嘿,这事儿不难!要在你的SQL Server游标里把数据打印到控制台,直接用PRINT语句就行——不过得注意把UNIQUEIDENTIFIER类型的变量转换成字符串,不然会报错。我已经帮你修改好了代码,加了打印逻辑,还做了详细注释:
Create table #tmp ( Ref_Code UNIQUEIDENTIFIER, Create_UserId UNIQUEIDENTIFIER ) --simple cursor in sql server Declare @Ref_Code UNIQUEIDENTIFIER , @Create_UserId UNIQUEIDENTIFIER -- declare a cursor DECLARE insert_cursor CURSOR FOR SELECT Ref_Code,Create_UserId from Account_APInvoiceDetail WHERE Ref_Code = '355199F6-0DE1-44AF-A8B2-2B1592980688'; -- open cursor and fetch first row into variables OPEN insert_cursor FETCH NEXT FROM insert_cursor into @Ref_Code,@Create_UserId -- check for a new row WHILE @@FETCH_STATUS=0 BEGIN -- do complex operation here Insert into #tmp SELECT @Ref_Code,@Create_UserId -- 打印当前行数据到控制台:用CAST把GUID转成字符串,才能和文本拼接 PRINT '当前行数据:Ref_Code = ' + CAST(@Ref_Code AS VARCHAR(36)) + ', Create_UserId = ' + CAST(@Create_UserId AS VARCHAR(36)) -- 或者用CONCAT函数,自动处理类型转换,写法更简洁(SQL Server 2012及以上支持) -- PRINT CONCAT('当前行数据:Ref_Code = ', @Ref_Code, ', Create_UserId = ', @Create_UserId) -- get next available row into variables FETCH NEXT FROM insert_cursor into @Ref_Code,@Create_UserId END close insert_cursor Deallocate insert_cursor GO
小补充:
UNIQUEIDENTIFIER(GUID)属于特殊数据类型,无法直接和字符串拼接,所以要么手动用CAST转成VARCHAR(36),要么用CONCAT函数自动完成类型转换,后者写法更清爽。- 如果你用的是SQL Server Management Studio(SSMS),打印的内容会显示在消息标签页里,不是结果标签页哦。
内容的提问来源于stack exchange,提问作者niliya
相关产品推荐
相关产品推荐

