这个存储过程哪里错?怎么改?为什么?

misssdf 2010-10-14 02:01:24

ALTER PROC CreateCardID
( @num int
,@type int
,@password varchar(30)
,@result BIT OUTPUT
)
AS
DECLARE @CARD_ID NVARCHAR(10)
DECLARE @SubID INT
DECLARE @MAX NVARCHAR(10)
SELECT @MAX=SubID FROM Card_ID WHERE TYPE=@type
--PRINT @MAX
SET @SubID=@MAX
--PRINT @ID
DECLARE @STR NVARCHAR(2)
SET @STR='FM'
WHILE @num>0
BEGIN
SET @SubID=@SubID+1
IF LEN(@SubID)<8
BEGIN
DECLARE @LEN INT
SET @LEN=8-LEN(@SubID)
PRINT @LEN
DECLARE @CODE NVARCHAR
WHILE @LEN>0
BEGIN
SET @CODE=@CODE+'0'
SET @LEN=@LEN-1
END
PRINT @CODE
SET @CARD_ID=@STR+@CODE+convert(char,@SubID)
END
ELSE
SET @CARD_ID=@STR+convert(char,@SubID)
--STR(@ID)
PRINT @CARD_ID
INSERT INTO Card_ID(SubID,CardID,Card_Password,[Type])
VALUES(@SubID,@CARD_ID,dbo.f_jmstr(@password, 'keystr '),@type)
if @@error <> 0
set @result=0
else
set @result=1
SET @num=@num-1
END



错在这里:BEGIN
SET @CODE=@CODE+'0'
SET @LEN=@LEN-1
END
为什么@CODE=@CODE+'0'之后,@CODE的值变成null了呢?怎样能让@CODE能连接上‘0’?

...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganchunsaixx 2010-10-15
  • 打赏
  • 举报
回复
呵呵~~~
路过
  • 打赏
  • 举报
回复
哎,很久没搞SQL了,要看很久才能看懂SQL代码
SQLCenter 2010-10-14
  • 打赏
  • 举报
回复
DECLARE @CODE NVARCHAR
---------
不够长,缺省nvarchar(1)

DECLARE @CODE NVARCHAR(1000)
misssdf 2010-10-14
  • 打赏
  • 举报
回复
不对呀,我想让他循环不断地+‘0’,怎么只能加上一个0?
kevn 2010-10-14
  • 打赏
  • 举报
回复
给@code 个初始值
kevn 2010-10-14
  • 打赏
  • 举报
回复
declare @code varchar(10)
set @code = ''
set @code = @code +'0'

print @code

22,207

社区成员

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

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