2017-06-12 23 views
7

हाल ही में मैंने यूडीटी के बारे में पढ़ा है। मैंने एक प्रकार बनाया है लेकिन मुझे उसमें कोई समस्या है। निम्नलिखितएक त्रुटि प्रकार ब्लॉक को फेंकने के बजाय सफलतापूर्वक निष्पादित

---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) के साथ एसएसएन अशक्त नहीं बना है पर गौर करें, और ऊपर एक तर्क भाग गया, इसे सफलतापूर्वक निष्पादित enter image description here

मेरी धारणा के अनुसार यह एक फेंक चाहिए त्रुटि।

मुझे यह जानने की जरूरत है कि उपर्युक्त तर्क सफलतापूर्वक क्यों चल रहा है।

संपादित

प्रति सुझाव के रूप में मैं, AQL सर्वर में एक स्तंभ के रूप में इस 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) 
    ) 

enter image description here

UDT के लिए बना सकते हैं

तालिका बनाने के दौरान एक त्रुटि आई थी जिसमें कहा गया था कि ऐसा कोई डेटाटाइप "एसएसएन"

अग्रिम

+0

आपको किस त्रुटि से प्राप्त होने की उम्मीद है? –

+0

@GiorgosBetsos मुझे उम्मीद है कि शून्य मान – Smart003

+1

को शून्य मान को असाइन नहीं किया जा सकता है, हम SQL सर्वर में * प्रारंभिक * के साथ 'variable 'घोषित कर सकते हैं (इसे' NULL 'पर डिफ़ॉल्ट)। तो यह 'यूडीटी' की 'नॉट नल' संपत्ति को आवाज देता है। निश्चित नहीं है कि इसे यूडीटी में न्यूल संपत्ति का उल्लेख करने की अनुमति क्यों दी गई। –

उत्तर

1

यहाँ धन्यवाद reason

null_type पैरामीटर केवल इस डेटा प्रकार के लिए डिफ़ॉल्ट nullability परिभाषित करता है। अगर शून्यता डेटा स्पष्ट रूप से परिभाषित किया गया है जब उपनाम डेटा प्रकार तालिका निर्माण के दौरान उपयोग किया जाता है, तो परिभाषित शून्यता पर प्राथमिकता लेती है।

यह sp_addtype से लिया जाता है, लेकिन यह CREATE TYPE के साथ एक ही मामला होना चाहिए। sp_addtype का उपयोग उपयोगकर्ता परिभाषित डेटा प्रकार

आपके मामले में, हम एक वेरिएबल नहीं बना सकते हैं जो NOT NULL मान स्वीकार नहीं करेगा। तो मुझे लगता है कि संपत्ति

संबंधित मुद्दे