2014-03-03 56 views
0

我的數據庫觸發器從列中獲取日期並將60天添加到該列中並將其存儲到另一列中。存儲過程在我的子查詢上拋出錯誤

當我在查詢窗口中執行代碼時,它會像預期的那樣執行,並引發以下錯誤。

消息512,級別16,狀態1,行4
子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

我的代碼:

DECLARE @NextDate date 

SELECT @NextDate = (SELECT DATEADD(day, 10, Today) FROM Test) 

INSERT INTO Test (Notes, Today) 
VALUES ('Testing in Query2', GETDATE()) 

DECLARE @newint int 

SET @newint = SCOPE_IDENTITY() 

UPDATE Test 
SET Someday = @NextDate 
WHERE ID = @newint 

結果

Result when i execute

但保持與結果給出錯誤。

消息512,級別16,狀態1,行4
子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

回答

0

那麼最後我整理出來,我傻:d

INSERT INTO Test(Notes,Today) 
values ('Testing in Query3',GETDATE()) 

DECLARE @newint int 

SET @newint = SCOPE_IDENTITY() 

DECLARE @NextDate date 

SELECT @NextDate = (SELECT DATEADD(day,10,Today) FROM Test WHERE ID = @newint) 

UPDATE Test 
SET Someday = @NextDate 

WHERE ID = @newint 

GO 

我一卷只好把凡在該行

SELECT @NextDate = (SELECT DATEADD(day,10,Today) FROM Test WHERE ID = @newint) 
1
INSERT INTO @NextDate SELECT DATEADD(day,10,Today) FROM Test 
+0

只需幾秒鐘:)我認爲它試圖以另一種方式相同 –

1

在查詢

SELECT @NextDate = (SELECT DATEADD(day,10,Today) FROM Test) 

子查詢返回多個值,並且不能將多個值分配給一個變量。這會導致您查詢中的問題。

由於多米尼克Deepan.d建議使用WHERE條件

SELECT @NextDate = (SELECT DATEADD(day,10,Today) FROM Test WHERE ID = @newint) 

否則之前

SELECT @NextDate = DATEADD(day,10,Today) FROM Test WHERE ID = @newint