SQL中怎么退出IF语句,即出现报错不执行后面的语句

----检查是否存在存储过程sp_zwm_EnditSEOrder,如存在删除ifexists(select*fromsysobjectswhereid=object_i... ----检查是否存在存储过程 sp_zwm_EnditSEOrder,如存在删除
if exists (select * from sysobjects where id = object_id('sp_zwm_EnditSEOrder') and OBJECTPROPERTY(id,'IsProcedure') = 1)
drop procedure sp_zwm_EnditSEOrder
GO
----创建存储过程sp_zwm_EnditSEOrder
create proc sp_zwm_EnditSEOrder
@FbillnoNum varchar(50), --销售订单号
@Fcustid varchar(50) --客户名称内码
as
---定义字段
declare @icmo int,@Fentry int,@Fname int,@FnameOld varchar(50),@FStatus int ,@FChildren int,@Fclosed int
select @FbillnoNum=ltrim(isnull(@FbillnoNum, '')), @Fcustid=ltrim(isnull(@Fcustid, ''))
if @FbillnoNum not like 'HTSO%'
select [执行结果]='错误: [销售订单号]参数应该为HTSO开头!'
else if @Fcustid=''
select [执行结果]='错误: [新客户名称]参数不能为空!'
else
begin
---检查单据是否审核
select @Fentry=FInterID,@Fname=fcustid,@FStatus=FStatus,@FChildren=FChildren,@Fclosed=Fclosed from SEOrder where FBillNo =@FbillnoNum
if @@rowcount=0

select [执行结果]='错误: 销售订单号'+@FbillnoNum+'修改客户名称执行失败,原因:1、单据不存在。'

if @FStatus = 0 --审核人字段为0 即未审核

select [执行结果]='错误: 销售订单号'+@FbillnoNum+'修改客户名称执行失败,原因:2、单据未审核或单据已作废。'

if @FChildren <> 0 --关联标识字段为0即未关联

select [执行结果]='错误: 销售订单号'+@FbillnoNum+'修改客户名称执行失败,原因:3、单据已有关联单据。'

if @Fclosed <> 0 --关闭标识字段为0 即未关闭

select [执行结果]='错误: 销售订单号'+@FbillnoNum+'修改客户名称执行失败,原因:4、单据已关闭。'

---检查是否存在新客户

select @icmo=FitemID from t_organization where Fname=@Fcustid
if @@rowcount=0

select [执行结果]='错误: 新客户名称'+@Fcustid+'不存在!'

---查询旧客户名称
select @FnameOld=Fname from t_organization where FitemID=@Fname
---检查旧客户和新客户是否相同 、
if @Fname=@icmo

select [执行结果]='错误: 销售订单号'+@FbillnoNum+'新客户名称['+@Fcustid+']和旧客户名称['+@FnameOld+']相同,无需修改。'

end
if isnull(@icmo, 0) = 0
return
-- 执行修改客户名称
update SEOrder set fcustid=@icmo where FInterID = @Fentry

-- 返回修改结果
if @@error=0
select [执行结果]='销售订单号'+@FbillnoNum+'客户名称由[ '+@FnameOld+'] 修改为 ['+@Fcustid+'],执行成功!'
else
select [执行结果]='错误: 销售订单号'+@FbillnoNum+'更改客户出现异常!'
GO
展开
 我来答
Ailiex
2014-05-21 · TA获得超过996个赞
知道小有建树答主
回答量:1108
采纳率:37%
帮助的人:560万
展开全部
if @FbillnoNum not like 'HTSO%'
    begin
         select [执行结果]='错误: [销售订单号]参数应该为HTSO开头!'
         return   --加个return 退出执行SQL
     end

类似这样的。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2a3de152f
2014-05-21 · TA获得超过127个赞
知道小有建树答主
回答量:164
采纳率:100%
帮助的人:106万
展开全部
SQL临时没有执行过程中断的函数。
一般用if 时用 begin和end把语包起来。相当于C中的{}
if(判断)
begin
执行语句

end
else
begin
为假时,要执行的语句
end

SQL针对事务(transaction)是一个或多个接连在一起作为一个逻辑单位运行的SQL语句。DBMS认为事务是不可分割的,要么全部执行,要么全不执行。
begin transaction ---开始事务
commit transaction --提交事务
rollback transaction --错误时,回滚事务
参考:
http://blog.csdn.net/tianwailaibin/article/details/8004609
http://www.2cto.com/database/201208/146734.html
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式