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

SQL高级编码题:某银行的数据库中有一账户信息表userInfo,结构如下:,第1张

第一个。

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时执行成功。其他值时表示错误。不需要可取消

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 < @empavg

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

也许是数据库的问题,我也遇到过,我用的是wampserver,界面的工具,直接点鼠标就可能建成mysql数据库,建成后导入数据,查询数据库返回面而的是乱码,我遇到的情况是这样的:

1、建库用gbk,如图。

2、导入表及数据时,默认是utf,此处要改成gbk就不是乱码了,如第图底页面,如果是默认的或是其它的字符集,能导入成功但是乱码。另外直接把sql粘贴到sql窗口,也不是乱码。

希望能帮到你,呵呵~

是的,定义时候这样

列名 IDENTITY [ ( seed , increment ) ]

seed,是装入表的第一行所使用的值

increment,是添加到前一行的标识值的增量值。

必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值 (1,1),即从初值1开始每次增1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10073706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存