【发布时间】:2017-02-23 04:58:40
【问题描述】:
我正在尝试为一群新员工生成非连续的唯一 PIN。 以下是它的工作原理:
- 游标应该从表 B 中获取所有新员工
- 为每位新员工生成新的独特别针
- 检查新生成的PIN是否已经存在于表A中
- 如果是,请重复第 2 步,直到我们为所有新员工获得唯一的 PIN 码
- 将新员工编号和 PIN 码插入表 A
在表 A 上,字段为 PIN、Employee_Number、Date
我尝试使用 cursor 一个一个地插入每个新的 emp 和他的 PIN,以便在每次插入时检查唯一性:
这只会循环一次并停止,有人可以告诉我我错过了什么
DECLARE
@EmpNo VARCHAR(50),
@Pin INT,
@today DATETIME,
@Upper INT,
@Lower INT,
SET @Lower = 100000 ---- The lowest random number allowed
SET @Upper = 999999 ---- The highest random number allowed
DECLARE cur CURSOR FOR
SELECT
Employee_Number,
(ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0))as PIN,
GETDATE()
FROM TableB
WHERE Employee_Number NOT IN (SELECT Employee_Number FROM TableA)
OPEN cur
FETCH NEXT FROM cur INTO @EmpNo, @Pin, @Today
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO TableA (PIN, Employee_Number, Date)
SELECT @Pin, @EmpNo, @Today
FETCH NEXT FROM cur INTO @Pin, @EmpNo, @Today
END
CLOSE cur
DEALLOCATE cur
【问题讨论】:
标签: sql-server loops random cursor unique