数据库lib7第4题创建存储过程
1.
传入2个字符串变量,其中,每个字符串是用分号(;)分隔的字串形式,
比如str1=’ab12;ab;cccc;tty’, str2=’1;6sf;8fffff;dd’,
注意,字符串是用户输入的,不能固定值、长度、和分号个数。
2.
执行完毕存储过程后,要求根据分号提取字符串的字串,并一一插入到表Kc中。
例如上面的str1, str2传入后,要求执行完毕存储过程后,表Kc中的值如下所示(开始表中没有数据)
代码如下:
1 create proc insert_data 2 @str1 varchar(MAX), 3 @str2 varchar(MAX) 4 as 5 begin 6 declare @len1 int, 7 @len2 int, 8 @pos1 int, 9 @pos2 int, 10 @start_point1 int, 11 @start_point2 int, 12 @subString1 varchar(MAX), 13 @subString2 varchar(MAX) 14 select @len1 = len(@str1); 15 select @len2 = len(@str2); 16 select @start_point1 = 1; 17 select @start_point2 = 1; 18 while (1 > 0) 19 begin 20 select @pos1 = charindex(‘;‘, @str1, @start_point1); 21 select @pos2 = charindex(‘;‘, @str2, @start_point2); 22 if (@pos1 = 0 and @pos2 = 0) 23 begin 24 select @subString1 = substring(@str1, @start_point1, @len1-@start_point1+1); 25 select @subString2 = substring(@str2, @start_point2, @len2-@start_point2+1); 26 insert into Kc values(@subString1, @subString2); 27 break; 28 end 29 else if (@pos1 = 0) 30 begin 31 select @subString1 = NULL; 32 select @subString2 = substring(@str2, @start_point2, @pos2-@start_point2); 33 end 34 else if (@pos2 = 0) 35 begin 36 select @subString2 = NULL; 37 select @subString1 = substring(@str1, @start_point1, @pos1-@start_point1); 38 end 39 else 40 begin 41 select @subString1 = substring(@str1, @start_point1, @pos1-@start_point1); 42 select @subString2 = substring(@str2, @start_point2, @pos2-@start_point2); 43 end 44 insert into Kc values(@subString1, @subString2); 45 select @start_point1 = @pos1 + 1; 46 select @start_point2 = @pos2 + 1; 47 if (@start_point1 > @len1 and @start_point2 > @len2) 48 break 49 end 50 end
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。