我有这个表和存储过程功能:SQL查询和存储过程没有产生预期的效果
表:
CREATE TABLE _DMigNumbers(
Number numeric(20,0) NOT NULL PRIMARY KEY
);
INSERT INTO _DMigNumbers VALUES(0)
存储过程的功能:
CREATE FUNCTION read_and_increment()
RETURNS NUMERIC(20,0)
BEGIN
DECLARE @number_just_read NUMERIC(20,0);
SELECT number INTO @number_just_read
FROM _DMigNumbers;
UPDATE _DMigNumbers
SET number = number + 1;
RETURN @number_just_read;
End
,我创建这个号码表以及
CREATE TABLE _Numbers (
Number int NOT NULL PRIMARY KEY
);
INSERT INTO _Numbers VALUES(1)
INSERT INTO _Numbers VALUES(2)
INSERT INTO _Numbers VALUES(3)
INSERT INTO _Numbers VALUES(4)
NOW:
当我这样做:
select
f.Number
,read_and_increment()
from _Numbers f
我得到:
Number-----Value 1 0 2 0 3 0 4 0
我要像不同的值(0,1,2,3) - 什么做我需要做的为了达成这个?
我明白,我正在因为单选择的值相同,但不知道什么,我需要做的就是我所追求的那一刻......
我不能用IDENTITY或自动增量看到my previous question for more details if interested...
感谢,
巫毒
这似乎是巫术编程。 afaik,这是我第一次在SO – Hao 2010-07-01 00:18:05
这里看到过那种查询(在做select的时候更新)问题。根据另一篇文章的接受答案,它看起来像缺少一个提交语句。这是否会在Sybase中自动发生? – 2010-07-01 03:16:05
我没有访问Sybase的权限,所以我无法运行该代码。但是在SQL Server中,你不能创建这样的函数,你会得到这样的错误:'函数中'UPDATE'中的副作用或时间依赖运算符的使用无效。'我不知道你是如何' d在Sybase中执行此操作。 – 2010-07-01 12:52:00