用存储来更新多表

liqunen 2004-03-24 02:53:38
我的存储是这样写的
CREATE PROCEDURE dt_cyup
@cy_bah varchar(9),
@cy_cwh varchar(10),
@cy_ksmc varchar(10),
@cy_czy varchar(10),
@cy_yj money
as
begin tran t1
update cw set sy="1" where cwh=@cy_cwh and ksmc=@cy_ksmc;
update brk set 当前状态="3",出院日期=getdate(),出院办理员=@cy_czy where 住院号=@cy_bah;
update 住院用药 set 当前状态="3" where 住院号=@cy_bah and 当前状态="1";
update brfy set 当前状态="3" where 住院号=@cy_bah and 当前状态="1";
if @cy_yj<>0
begin
insert into yj(住院号,押金金额,操作员,押金说明) values(@cy_bah,@cy_yj,@cy_czy,"出院预交");
end
commit tran t1
GO
//是这样调用的
DECLARE my_cyup PROCEDURE FOR dt_cyup
@cy_bah=:h_b.bah_1,
@cy_cwh=:h_b.cw_1,
@cy_ksmc=:h_b.ksmc_1,
@cy_czy=:czy_1,
@cy_yj=:yj_2
using sqlca;
execute my_cyup;
if sqlca.sqlcode<>0 then
messagebox("系统提示","此病人出院被终止"+sqlca.sqlerrtext)
close my_cyup;
return
end if
close my_cyup;
上面的存储写得对不对主要是默认值的写法,出院日期=getdate()
还有调用对不对有没有其它调用方法我是多表更新要不一表更新后时行检测以并进行下一表更新.
多谢大家的指点
...全文
22 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liqunen 2004-03-27
  • 打赏
  • 举报
回复
哪位大侠帮我看看,已经好几天我快要结帐了.
liqunen 2004-03-26
  • 打赏
  • 举报
回复
CREATE PROCEDURE dt_cyup
@cy_bah varchar(9),
@cy_cwh varchar(10),
@cy_ksmc varchar(10),
@cy_czy varchar(10),
@cy_yj money,
@cy_return int output,
@cy_err varchar(20) output
as
DECLARE @er_h int
SET @er_h=0
begin tran t1
update cw set sy='1' where cwh=@cy_cwh and ksmc=@cy_ksmc
SET @er_h=@@error
if @er_h<>0
begin
rollback tran t1
SET @cy_return= 1
SET @cy_err= "在进行床位更新时出错"
return
end
update brk set 当前状态="3",出院日期=getdate(),出院办理员=@cy_czy where 住院号=@cy_bah;
SET @er_h=@@error
if @er_h<>0
begin
rollback tran t1
SET @cy_return = 1
SET @cy_err= "在进行病人停息表更新时出错"
return
end
update 住院用药 set 当前状态="3" where 住院号=@cy_bah and 当前状态="1";
SET @er_h=@@error
if @er_h<>0
begin
rollback tran t1
set @cy_return= 1
set @cy_err="在进行病人用药更新时出错"
return
end
update brfy set 当前状态="3" where 住院号=@cy_bah and 当前状态="1";
SET @er_h=@@error
if @er_h<>0
begin
rollback tran t1
set @cy_return= 1
set @cy_err="在进行费用表时更新时出错"
return
end
if @cy_yj<>0
begin
insert into yj(住院号,押金金额,操作员,押金说明) values(@cy_bah,@cy_yj,@cy_czy,'出院预交');
SET @er_h=@@error
if @er_h<>0
begin
rollback tran t1
set @cy_return = 1
set @cy_err="在进行押金更新时出错"
return
end
end
commit tran t1
SET @cy_return= 0
GO
我的存储像上面写的我运行没什么问题,大家帮我看看,我什么地方要改进并且我觉得用存储比直接用sql语句慢得多这是怎么回事.
liqunen 2004-03-24
  • 打赏
  • 举报
回复
我是多表更新要不一表更新后时行检测以并进行下一表更新.
workhand 2004-03-24
  • 打赏
  • 举报
回复
你试试不就知道了吗?
sp里没有;

22,209

社区成员

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

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