日期:2014-05-18  浏览次数:20483 次

希望当更新或插入操作不成功的时候,SQLSERVER的存储过程能返回一个信息
论坛上的各位朋友,小弟总共有4个问题,都写在存储过程里面了,希望有朋友能帮忙解决小弟的问题,谢谢!!!

ALTER         procedure   KaoQinInsertUpdateEmployee
                  @emp_id   nvarchar(50),@card_id   nvarchar(20),@insert_update   varchar(10)


as

if   @insert_update= 'insert '
    begin
      /*       问题1:想先对传进来的@emp_id作一个SELECT(select   *   from   表   where   emp_id=@emp_id),如果SELECT的结果不为空(因为表的emp_id字段不能重复)就将返回值赋值为:   “emp_id这个字段不能重复,请注意”
然后不继续执行后面的语句,直接退出这个存储过程,并将返回值带出
*/
        insert   into   employee   (emp_id,card_id,)   values   (@emp_id,@card_id)

/*   问题2:如果插入成功,则将返回值赋值为“成功”,然后不继续执行后面的语句,直接带出返回值*/

    end

if   @insert_update= 'update '
    begin
  /*       问题3:想先对传进来的@card_id作一个SELECT(select   *   from   表   where   card_id=@card_id),如果SELECT的结果不为空(因为表的card_id字段不能重复)就将返回值赋值为:   “card_id这个字段不能重复,请注意”
然后不继续执行后面的语句,直接退出这个存储过程,并将返回值带出
*/

        update   employee   set   card_id=@card_id,   where   emp_id=@emp_id

/*     问题4:如果更新成功,则将返回值赋值为“成功”   */
    end    


------解决方案--------------------
ALTER procedure KaoQinInsertUpdateEmployee
@emp_id nvarchar(50),@card_id nvarchar(20),@insert_update varchar(10),@return varchar(100)

as

if @insert_update= 'insert '
begin
/* 问题1:想先对传进来的@emp_id作一个SELECT(select * from 表 where emp_id=@emp_id),如果SELECT的结果不为空(因为表的emp_id字段不能重复)就将返回值赋值为: “emp_id这个字段不能重复,请注意”
然后不继续执行后面的语句,直接退出这个存储过程,并将返回值带出*/
if exists (select 1 from 表 where emp_id=@emp_id)
begin
set @return= 'emp_id这个字段不能重复,请注意 '
return
end
else
begin
/*问题2:如果插入成功,则将返回值赋值为“成功”,然后不继续执行后面的语句,直接带出返回值*/
insert into employee (emp_id,card_id) values (@emp_id,@card_id)
set @return= '成功 '
return
end
end

if @insert_update= 'update '
begin
/* 问题3:想先对传进来的@card_id作一个SELECT(select * from 表 where card_id=@card_id),如果SELECT的结果不为空(因为表的card_id字段不能重复)就将返回值赋值为: “card_id这个字段不能重复,请注意”
然后不继续执行后面的语句,直接退出这个存储过程,并将返回值带出*/
if exists (select 1 from 表 where card_id=@card_id)
begin
set @return= 'card_id这个字段不能重复,请注意 '
return
end
else
begin
/*问题4:如果更新成功,则将返回值赋值为“成功”*/
update employee set card_id=@card_id where emp_id=@emp_id
set @return= '成功 '
end
end
------解决方案--------------------
ALTER procedure KaoQinInsertUpdateEmployee
@emp_id nvarchar(50),@card_id nvarchar(20),@insert_update varchar(10),
@message varchar(50) output --增加一个参数

as

if @insert_update= 'insert '
begin
-- 问题1:
if exists (select * from 表 where emp_id=@emp_id)
begin
set @message = 'emp_id这个字段不能重复,请注意 '
break
end
-- 问题2:
insert into employee (emp_id,card_id,) values (@emp_id,@card_id)
if (@@rowcount > 0)
begin
set @message = '成功 '
break
end


end

if @insert_update= 'update '
begin
-- 问题3:
if exists (select * from 表 where card_id=@card_id)
begin
set @message = 'card_id这个字段不能重复,请注意 '
break
e