下面的表格中包含值501。
CREATE TABLE _Numbers(
Number numeric(20,0) NOT NULL PRIMARY KEY
)
INSERT INTO _Numbers VALUES(501)我如何写一个存储的proc,它返回501,并按顺序递增Number (即502)?我希望每次调用存储的proc时都重复此行为。
(另外,我如何从任何查询中调用这个存储的proc?)
3151056是我之前问题的一部分。
谢谢,
伏都教
发布于 2010-07-01 01:05:27
CREATE OR REPLACE PROCEDURE read_and_increment (number_just_read OUT NUMBER)
IS
BEGIN
DECLARE
stored_number NUMBER DEFAULT NULL;
BEGIN
SELECT number
INTO stored_number
FROM _numbers
WHERE ROWNUM = 1;
number_just_read := stored_number;
UPDATE _numbers
SET number = number + 1;
COMMIT;
END;
END read_and_increment;发布于 2010-07-01 01:06:25
使用IDENTITY列,它会为您负责编号和递增。
任何返回的数字都可能已被另一个连接/客户端/进程使用
发布于 2010-07-01 01:17:49
您正在从旧表中导入数据,对吗?如果您在identity关闭的情况下从旧表导入数据,然后设置具有最高number+1的identity,并继续使用identity。
另一种方法是在插入时使用触发器,该触发器将检查NumberItem是否为null,如果为null,它将添加Max+1。如果没有,什么也不做。
我不认为SP是一个好的解决方案。我很确定你不需要这些东西。
https://stackoverflow.com/questions/3151548
复制相似问题