为什么执行完存储过程以后,Department_ID的值为空格啊

yczhengyong 2003-09-30 03:34:24
一个表Auto_Value(自增长字段),Department_ID(设为固定字符串,由自增长字段自动生成,由存储过程所示),Department,Description.为什么执行以下存储过程后Department_ID不是预期的值啊,如01,08,14之类反而为空格



CREATE PROCEDURE sp_into_department @department varchar(30),@Description varchar(50) =null AS
SET NOCOUNT ON
insert into Department (DepartmentName,Description) values (@Department,@Description)
UPDATE department SET Department_ID=RIGHT('00'+CAST(Auto_Value as char),2) WHERE Auto_Value = @@IDENTITY
GO
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-09-30
  • 打赏
  • 举报
回复
对于这句:
RIGHT('00'+CAST(Auto_Value as char),2)

因为char类型是会自动在后面被空格的,所以:
'00'+CAST(Auto_Value as char)
的结果为'00x '
后面有很多空格,再取右边两位,当然是空格了.
zjcxc 元老 2003-09-30
  • 打赏
  • 举报
回复
--数据类型的问题,用下面的就可以了:

CREATE PROCEDURE sp_into_department @department varchar(30),@Description varchar(50) =null AS
SET NOCOUNT ON
insert into Department (DepartmentName,Description) values (@Department,@Description)
UPDATE department SET Department_ID=RIGHT('00'+CAST(Auto_Value as varchar),2) WHERE Auto_Value = @@IDENTITY
GO
yujohny 2003-09-30
  • 打赏
  • 举报
回复
顺便问一句,你这个表有没有新增触发器???
如果有,那新增触发器里有没有新增别表的记录??
yujohny 2003-09-30
  • 打赏
  • 举报
回复

CREATE PROCEDURE sp_into_department @department varchar(30),
@Description varchar(50) =null AS
SET NOCOUNT ON
insert into Department(DepartmentName,Description)
values (@Department,@Description)

SELECT @@IDENTITY --你加这句看看@@IDENTITY的值是不是新增的那个自增值

UPDATE department
SET Department_ID=RIGHT('00'+CAST(Auto_Value as char),2)
WHERE Auto_Value = @@IDENTITY
GO

34,874

社区成员

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

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