我有這個表和存儲過程功能: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