我写了一个生成指定数量记录的存储过程,有一个字段的值有唯一性约束,而且这个值是随机生成的,在插入的时后如果报错,就返回重新生成一个值,再插入,但程序在报错后,就终止执行了,生成的数量少于指定的数量,能否忽略这个错误,继续执行?
存储过程的部分代码如下WHILE(@m < @Quantity)
BEGIN
GetCodeNo:
DECLARE @RandNo INT,@SingleNo CHAR(1),@CodeNo VARCHAR(30),@i INT
SELECT @i = 0,@CodeNo = ''
WHILE(@i < @NumberLength)
BEGIN
SET @RandNo = CAST(RAND()*35 AS INT)
IF (@RandNo > 0 AND @RandNo <= 9)
SET @SingleNo = CHAR(@RandNo + 48)
ELSE
SET @SingleNo = CHAR(@RandNo + 55)
SET @VouchersNo = @VouchersNo + @SingleNo
SET @i = @i + 1
END
--增加记录到抵用券表
INSERT INTO CodeInfo(CodeNo) VALUES(@CodeNo)
IF @@ERROR <> 0
BEGIN
GOTO VouchersNoAndCodeNo
SET @m = @m - 1
END
SET @m = @m + 1
END
存储过程的部分代码如下WHILE(@m < @Quantity)
BEGIN
GetCodeNo:
DECLARE @RandNo INT,@SingleNo CHAR(1),@CodeNo VARCHAR(30),@i INT
SELECT @i = 0,@CodeNo = ''
WHILE(@i < @NumberLength)
BEGIN
SET @RandNo = CAST(RAND()*35 AS INT)
IF (@RandNo > 0 AND @RandNo <= 9)
SET @SingleNo = CHAR(@RandNo + 48)
ELSE
SET @SingleNo = CHAR(@RandNo + 55)
SET @VouchersNo = @VouchersNo + @SingleNo
SET @i = @i + 1
END
--增加记录到抵用券表
INSERT INTO CodeInfo(CodeNo) VALUES(@CodeNo)
IF @@ERROR <> 0
BEGIN
GOTO VouchersNoAndCodeNo
SET @m = @m - 1
END
SET @m = @m + 1
END
解决方案 »
- 【HELP】数据表如何搭建【求助!】!!
- 谁了解这样的情况?关于excel与SQL之间的导入的问题
- 菜鸟级问题!!!!!!!
- 2005的报价?
- 在SQL text字段里,如何在多个汉语文章中统计高频词?
- SQL问题
- 为什么我的MSsqlserver2000可以用数据库名连接上去,而用本机IP去连接不上去,也就是说网络用户无法访问我的数据库
- 数据库结构一样,如何导数据?
- 关于向sqlserver数据库导入数据生成错误报告的问题?
- 请问繁体中文或英文 sql server2000 个人版的下载地址??哪位大侠知道?
- 服务器: 消息 8139,级别 16,状态 1,行 1 外键中引用列的数目与被引用列的数目不等,表 '分数'。 服务器: 消息 8139,级别 16,状态 1,
- 请教关于group语句的优化
select 1
BEGIN TRY
SELECT 1/0
END TRY
BEGIN CATCH
SELECT 0
END CATCH
SELECT 2/*-----------
1(1 行受影响)
-----------(0 行受影响)
-----------
0(1 行受影响)
-----------
2(1 行受影响)
*/
GO
CREATE UNIQUE INDEX UN_ID ON TB(ID) WITH IGNORE_DUP_KEY
GO
INSERT TB
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 2SELECT * FROM TB
DROP TABLE TB
/*
Duplicate key was ignored.
ID
-----------
1
2
*/