我需要在表中添加一個不為空且默認日期時間的新列。但我得到如下錯誤。我檢查了多個實體,但發生了錯誤。
DECLARE @SQL NVARCHAR(1000), @date NVARCHAR(1000);
SET @date = '9999-12-31 00:00:00.000'
SET @SQL = 'ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT @date';
EXEC sp_executesql @SQL;
這是我得到的錯誤。
必須宣告標量變數“@date”。
有什么解決辦法嗎?
uj5u.com熱心網友回復:
如果您替換@date為該值,它將起作用。
但是讓我們看看為什么它不起作用。你的 SQL:
DECLARE @SQL NVARCHAR(1000), @date NVARCHAR(1000);
SET @date = '9999-12-31 00:00:00.000'
SET @SQL = 'ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT @date';
EXEC sp_executesql @SQL;
宣告幾個變數并執行其中一個變數表示的 SQL 塊。您的問題是sp_executesql將某些文本讀取為 SQL 并嘗試運行它 - 如果您不能運行您告訴它運行的內容,那么它就不能。
因此,如果您要打開一個新的查詢視窗并嘗試運行:
ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT @date
它會崩潰,試圖弄清楚@date應該是什么。
DECLARE @date NVARCHAR(1000);
SET @date = '9999-12-31 00:00:00.000';
ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT @date;
會作業,或者干脆:
ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT '9999-12-31 00:00:00.000';
因此,使用連接您可以執行以下操作:
DECLARE @SQL NVARCHAR(1000), @date NVARCHAR(1000);
SET @date = '9999-12-31 00:00:00.000'
SET @SQL = 'ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT ' @date;
EXEC sp_executesql @SQL;
這會給您帶來不同的錯誤,因此請嘗試在date變數中包含一對引號:
DECLARE @SQL NVARCHAR(1000), @date NVARCHAR(1000);
SET @date = '''9999-12-31 00:00:00.000'''
SET @SQL = 'ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT ' @date;
EXEC sp_executesql @SQL;
uj5u.com熱心網友回復:
您正在尋找的內容如下所示,您通過連接創建動態 SQL
DECLARE @SQL NVARCHAR(1000), @date NVARCHAR(1000);
SET @date = '9999-12-31 00:00:00.000'
SET @SQL = 'ALTER TABLE [spi].[ProductClass]
ADD lastUpdatedTime datetime NOT NULL
CONSTRAINT default_updateTime DEFAULT ''' @date '''';
EXEC sp_executesql @SQL;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410558.html
標籤:
