获取一组数两两组合情况

本文介绍了一个使用T-SQL创建存储过程的例子,该过程通过游标和自定义表类型来解析输入字符串,并将其拆分为成对的值。具体实现了如何处理带有逗号分隔的输入,以及如何通过游标遍历这些值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


CREATE function [dbo].[Fun_GetArrange](
@input NVARCHAR(MAX)
)
returns @Arrange table (Val1 VARCHAR(200),Val2 VARCHAR(200))
as 
BEGIN
    DECLARE @FirstVal VARCHAR(50)
DECLARE @SecondVal VARCHAR(50)
    DECLARE @ExcludeValTable TABLE(ExcludeVal VARCHAR(50))
IF(CHARINDEX(',',@input) = 0)
BEGIN
INSERT INTO @Arrange( Val1, Val2 )VALUES(@input,NULL)
RETURN
    END
    
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.Fun_SplitString(@input,',')) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @FirstVal --读取第一行数据
WHILE @@FETCH_STATUS = 0
    BEGIN
               INSERT INTO @ExcludeValTable (ExcludeVal) VALUES (@FirstVal)
DECLARE My_Cursor1 CURSOR --定义游标
FOR (SELECT * FROM dbo.Fun_SplitString(@input,',') WHERE NOT EXISTS(SELECT 1 FROM @ExcludeValTable
WHERE c1  = ExcludeVal)) --查出需要的集合放到游标中
OPEN My_Cursor1; --打开游标
FETCH NEXT FROM My_Cursor1 INTO @SecondVal --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @Arrange(Val1,Val2)VALUES (@FirstVal,@SecondVal)


FETCH NEXT FROM My_Cursor1 INTO @SecondVal --读取下一行数据
END
CLOSE My_Cursor1; --关闭游标
DEALLOCATE My_Cursor1; --释放游标
    FETCH NEXT FROM My_Cursor INTO @FirstVal --读取下一行数据
    END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
return;
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值