关于SQL SERVER2005 中存储过程中异常的问题

sun5157 2012-09-05 10:01:36
小弟的存储过程中有这样一段代码:
1 update student set parent_id=@case_id where type='box' and label =@label1;
2 update student set parent_id=@case_id where type='box' and label =@label2;
3 update student set parent_id=@case_id where type='box' and label =@label3;
4 update student set parent_id=@case_id where type='box' and label =@label4;
5 update student set parent_id=@case_id where type='box' and label =@label5;
6 update student set parent_id=@case_id where type='box' and label =@label6
其中case_id label1 label2 label3 label4 label5 label6 为传进来的参数 而且 label2 label3 label4 label5 label6有可能传进来是空值
现在的问题是实际执行过程偶尔会出现只有1 2 3行被执行了 4 5 6 没有被执行(1-6传进的值全部不为空),怎么样写代码判断当1-6传进来的值不为空时 6行语句都执行了呢?当1-6都不为空时用try catch能不能捕获没有执行的异常呢?
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
汤姆克鲁斯 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

补充下1#的
SQL code

if @label1+@label2+ @label3 +@label4 +@label5 +@label6 is null or len(@label1)=1
or len(@label2)=1 or len(@label3)=1 or len(@label4)=1 or len(@label5)=1 or len(@label6)=1
……
[/Quote]应该是
if @label1+@label2+ @label3 +@label4 +@label5 +@label6 is null or @label1='' 
or @label2='' or @label3=''or @label4='' or @label5='' or @label6=''
sun5157 2012-09-05
  • 打赏
  • 举报
回复
这样写貌似有点问题:我传进来的1-6个值有这6中可能
1 null null null null null
1 2 null null null null
1 2 3 null null null
1 2 3 4 null null
1 2 3 4 5 null
1 2 3 4 5 6
[Quote=引用 2 楼 的回复:]

补充下1#的
SQL code

if @label1+@label2+ @label3 +@label4 +@label5 +@label6 is null or len(@label1)=1
or len(@label2)=1 or len(@label3)=1 or len(@label4)=1 or len(@label5)=1 or len(@label6)=1
……
[/Quote]
sun5157 2012-09-05
  • 打赏
  • 举报
回复
这样写貌似有点问题:我传进来的1-6个值是这样的
1 null null null null null null
1 2 null null null null null
1 2 3 null null null null
1 2 3 4 null null null
1 2 3 4 5 null null
1 2 3 4 5 6 null
[Quote=引用 2 楼 的回复:]

补充下1#的
SQL code

if @label1+@label2+ @label3 +@label4 +@label5 +@label6 is null or len(@label1)=1
or len(@label2)=1 or len(@label3)=1 or len(@label4)=1 or len(@label5)=1 or len(@label6)=1
……
[/Quote]
sun5157 2012-09-05
  • 打赏
  • 举报
回复
谢谢
[Quote=引用 1 楼 的回复:]

SQL code
IF @label2+ @label3 +@label4 +@label5 +@label6 IS NULL
BEGIN
RETURN
END

BEGIN TRY
update student set parent_id=@case_id where type='box' and label =@label1;
update student set parent_……
[/Quote]
  • 打赏
  • 举报
回复
补充下1#的

if @label1+@label2+ @label3 +@label4 +@label5 +@label6 is null or len(@label1)=1
or len(@label2)=1 or len(@label3)=1 or len(@label4)=1 or len(@label5)=1 or len(@label6)=1
return
else
begin try
update student set parent_id=@case_id where type='box' and label =@label1;
update student set parent_id=@case_id where type='box' and label =@label2;
update student set parent_id=@case_id where type='box' and label =@label3;
update student set parent_id=@case_id where type='box' and label =@label4;
update student set parent_id=@case_id where type='box' and label =@label5;
update student set parent_id=@case_id where type='box' and label =@label6
end try
begin catch
select ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH

汤姆克鲁斯 2012-09-05
  • 打赏
  • 举报
回复
IF @label2+ @label3 +@label4 +@label5 +@label6 IS NULL 
BEGIN
RETURN
END

BEGIN TRY
update student set parent_id=@case_id where type='box' and label =@label1;
update student set parent_id=@case_id where type='box' and label =@label2;
update student set parent_id=@case_id where type='box' and label =@label3;
update student set parent_id=@case_id where type='box' and label =@label4;
update student set parent_id=@case_id where type='box' and label =@label5;
update student set parent_id=@case_id where type='box' and label =@label6
END TRY
begin CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧