mysql中银行账号信息表_SQL高级编码题:某银行的数据库中有一账户信息表userInfo,结构如下:...

展开全部

第一个。SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[acc_moneyout]

(@acc_from INTEGER,@acc_to INTEGER,@money INTEGER,@rtn INTEGER OUTPUT)

--@rtn表示返回值。返回为0时执62616964757a686964616fe78988e69d8331333335343437行成功。其他值时表示错误。不需要可取消

AS

BEGIN TRAN

DECLARE @tran_err INTEGER

SET NOCOUNT ON;

UPDATE userInfo SET ucount = ucount + @money WHERE uid = @acc_to

SET @tran_err = @tran_err + @@ERROR

UPDATE userInfo SET ucount = ucount - @money WHERE uid = @acc_from

SET @tran_err = @tran_err + @@ERROR

IF @tran_err <> 0

BEGIN ROLLBACK TRAN

SET @rtn = 0

END

ELSE

BEGIN COMMIT TRAN

SET @rtn = 1

END

GO

第二个SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[add_salary]

(@depart_in VARCHAR(10),@rtn INTEGER OUTPUT)

--@rtn表示返回值。不需要可取消。为0时表示输入的部门查询到的平均工资为0,正常情况不会出现,除非输入的部门不存在

--@rtn为1时表示加100,为2时表示加200

AS

BEGIN

SET NOCOUNT ON;

DECLARE @empavg DECIMAL(9,2)

DECLARE @depavg DECIMAL(9,2)

SELECT @depavg = ISNULL(ROUND(AVG(empSalary),2),0) FROM salaryInfo WHERE departName = @depart_in

IF @depavg = 0

BEGIN

SET @rtn = 0

END

ELSE

BEGIN

SELECT @empavg = ISNULL(ROUND(AVG(empSalary),2),0) FROM salaryInfo

IF @depavg 

BEGIN

UPDATE salaryInfo SET empSalary = empSalary + 200 WHERE departName = @depart_in

SET @rtn = 2

END

ELSE

BEGIN

UPDATE salaryInfo SET empSalary = empSalary + 100 WHERE departName = @depart_in

SET @rtn = 1

END

END

PRINT @rtn

END

GO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值