这个存储过程哪里错?怎么改?为什么?
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’?