7
最近我已閱讀關於UDT。我創建了一個類型,但是我遇到了一個問題。請看以下而不是拋出錯誤類型塊成功執行
---drop type ssn
CREATE TYPE ssn
FROM VARCHAR(11) NOT NULL;
DECLARE @er ssn;
IF Object_id('TEMPDB.DBO.#ter', 'U') IS NOT NULL
DROP TABLE #ter;
CREATE TABLE #ter (
PERIOD_SID INT
,PERIOD_QUAR VARCHAR(10) PRIMARY KEY (PERIOD_SID)
)
INSERT INTO #ter (
PERIOD_SID
,PERIOD_QUAR
)
SELECT *
FROM (
VALUES (
(1)
,(@er)
)
) V(p, q)
我創建VARCHAR(11)爲ssn一種不爲空,跑到上面的一個邏輯,它成功地執行
按我的設想,應該拋出錯誤。
我需要知道爲什麼上述邏輯成功運行。
編輯
按照建議,我已經加入此UDT在AQL服務器列,因爲在Oracle中,我們可以創建類似收藏一列UDT
IF Object_id('TEMPDB.DBO.#ter1', 'U') IS NOT NULL
DROP TABLE #ter1;
CREATE TABLE #ter1 (
PERIOD_SID INT
,PERIOD_QUAR ssn PRIMARY KEY (PERIOD_SID)
)
創建表時遇到錯誤,表示沒有此類數據類型「ssn」
預先感謝
你期望得到哪個錯誤? –
@GiorgosBetsos我希望像空值不能分配給變量 – Smart003
在SQL Server中,我們可以'聲明'變量'*初始化*它(默認爲'NULL')。所以它會使'UDT'的NOT NULL屬性無效。不知道爲什麼它允許在UDT中提及NOT NULL屬性。 –