ms_SQL事务请教 在线等待 急 分不多30分送

uffeng 2003-10-07 06:04:07
很简单的
table A,B两张
要在一存储过程中 A增加一记录 "A01"...同时增加表B中的一个字段 字段名就是A01
需要都要完成 ,如出错,回滚。
请达人指教 给出我自己的代码,请大家补充完成就成。

ALTER proc addnew
@type tinyint,
@gzid nchar(3),
@gzname nvarchar(16),
@depend nvarchar(360),
@express nvarchar(1000)
as
declare @mystr nvarchar(100)

if @type=0
insert into Pay(GZ_ID,GZ_name,GZ_State) values(@gzid,@gzname,0)
else if @type=1
insert into Pay(GZ_ID,GZ_name,GZ_depend,GZ_Express,GZ_State) values(@gzid,@gzname,@depend,@express,0)

set @mystr=N'ALTER TABLE Mpinfo add' +' ' + @gzid+' '+'decimal(13,2)'+' ' + 'null'
exec (@mystr)
return 1
...全文
41 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-07
  • 打赏
  • 举报
回复


ALTER proc addnew
@type tinyint,
@gzid nchar(3),
@gzname nvarchar(16),
@depend nvarchar(360),
@express nvarchar(1000)
as
declare @mystr nvarchar(100)

set @mystr=N'ALTER TABLE Mpinfo add ' + @gzid+' '+'decimal(13,2) null'

SET XACT_ABORT on
begin tran

if @type=0
insert Pay(GZ_ID,GZ_name,GZ_State) values(@gzid,@gzname,0)
else if @type=1
insert Pay(GZ_ID,GZ_name,GZ_depend,GZ_Express,GZ_State) values(@gzid,@gzname,@depend,@express,0)
exec (@mystr)

commit tran

return 1
pengdali 2003-10-07
  • 打赏
  • 举报
回复
你一句话也用rollback吗?


ALTER proc addnew
@type tinyint,
@gzid nchar(3),
@gzname nvarchar(16),
@depend nvarchar(360),
@express nvarchar(1000)
as
declare @mystr nvarchar(100)

SET XACT_ABORT on
begin tran

if @type=0
insert Pay(GZ_ID,GZ_name,GZ_State) values(@gzid,@gzname,0)
else if @type=1
insert Pay(GZ_ID,GZ_name,GZ_depend,GZ_Express,GZ_State) values(@gzid,@gzname,@depend,@express,0)

if @@error<>0
return -1
set @mystr=N'ALTER TABLE Mpinfo add ' + @gzid+' '+'decimal(13,2) null'
exec (@mystr)

commit tran

return 1
uffeng 2003-10-07
  • 打赏
  • 举报
回复
大力V30还在吗
uffeng 2003-10-07
  • 打赏
  • 举报
回复
问题就在怕出现意外!! 请指教 如果一定要回滚语句 需要如何写?
pengdali 2003-10-07
  • 打赏
  • 举报
回复
你这里没有必要用回滚,你只有一条语句执行,回滚是: rollback 。你这里直接return就可以了
uffeng 2003-10-07
  • 打赏
  • 举报
回复
请教 这样可以回滚的吗?
我怕增加A记录以后 出现异常出错, B表中没有增加字段
是否可回滚 在代码回滚懂 在SQL写回滚就不会了!
pengdali 2003-10-07
  • 打赏
  • 举报
回复
ALTER proc addnew
@type tinyint,
@gzid nchar(3),
@gzname nvarchar(16),
@depend nvarchar(360),
@express nvarchar(1000)
as
declare @mystr nvarchar(100)

if @type=0
insert Pay(GZ_ID,GZ_name,GZ_State) values(@gzid,@gzname,0)
else if @type=1
insert Pay(GZ_ID,GZ_name,GZ_depend,GZ_Express,GZ_State) values(@gzid,@gzname,@depend,@express,0)

if @@error<>0
return -1
set @mystr=N'ALTER TABLE Mpinfo add ' + @gzid+' '+'decimal(13,2) null'
exec (@mystr)

return 1

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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