Ostatnio czytałem o UDT. Stworzyłem typ, ale mam z tym problem. Proszę spojrzeć na następująceZamiast rzucania bloku typu błędu wykonanego pomyślnie
---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)
mam utworzyć typ SSN z varchar (11) NOT NULL, a prowadził nad jedną logikę, to wykonać pomyślnie
Jak na moje założenia powinien rzucać błąd.
Muszę wiedzieć, dlaczego powyższa logika działa poprawnie.
EDIT
zgodnie z sugestią dodałem ten UDT jako kolumny w serwerze AQL, ponieważ w Oracle możemy utworzyć kolumnę z kolekcji podobnej do 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)
)
Wystąpił błąd podczas tworzenia tabeli z informacją, że nie było takiego typu danych "ssn"
góry dzięki
Jakiego błędu oczekiwałeś? –
@GiorgosBetsos Chciałbym się spodziewać, że wartości pustej nie można przypisać do zmiennej er – Smart003
W SQL Server możemy "zadeklarować" zmienną 'z * inicjalizacją * it (domyślnie" NULL "). Więc unieważnia właściwość 'NOT NULL' z' UDT'. Nie wiem, dlaczego zezwolono na wymienienie właściwości NOT NULL w UDT. –