5

क्या मेरे पास तालिका में एक नया कॉलम जोड़ने और कॉलम के बाद काम करने के लिए एक एकल संग्रहीत प्रक्रिया हो सकती है? उदाहरण के लिए, मैं संग्रहीत प्रक्रिया का पालन किया है:संग्रहीत प्रक्रिया में एक कॉलम जोड़ना

... 

alter table tb1 
add col1 varchar(1) null 

insert into tb1(col1) 
values ('Y') 

मैं कह रहा

col1 अमान्य है त्रुटि मिली है।

+0

आप स्तंभ जोड़ने के बाद आदेश जाना निष्पादित करें।? – Muthukumar

+5

आपके पास संग्रहित प्रक्रिया के बीच में 'जाओ' कथन नहीं हो सकते हैं – LittleBobbyTables

+0

SQL सर्वर जांच रहा है कि जब आप proc बना रहे हैं तो कॉलम मौजूद है, इस प्रकार आपको मैन्युअल रूप से कॉलम जोड़ना होगा, proc बनाना होगा, फिर निकालें इसे काम करने के लिए कॉलम। मैं डायनामिक एसक्यूएल वर्कअराउंड का सुझाव दूंगा कि @LittleBobbyTables ने जोड़ा है, हालांकि संभवत: 'sp_executesql' का उपयोग कर रहा है। –

उत्तर

11

बाद में मान डालने के बजाय 'वाई' के डिफ़ॉल्ट मान के साथ तालिका बनाने का प्रयास करें।

alter table tb1 add col1 varchar(1) not null DEFAULT ('Y') 

आप दो लाइनों के बीच में GO की आवश्यकता होगी तालिका के अनुसार GO प्रलेखन के रूप में, बनाया है:

एसक्यूएल सर्वर उपयोगिताओं एक संकेत के रूप में व्याख्या GO है कि वे के मौजूदा बैच भेजना चाहिए SQL सर्वर के एक उदाहरण के लिए ट्रांजैक्ट-एसक्यूएल कथन।

हालांकि, आपके पास संग्रहीत प्रक्रियाओं में GO कथन नहीं हो सकते हैं।

संपादित

वैकल्पिक रूप से, आप अपने कोड को निष्पादित करने के EXEC बयान इस्तेमाल कर सकते हैं:

EXEC ('alter table tb1 add col1 varchar(1) null') 
EXEC ('update tb1 set col1 = ''Y''') 
+0

मैं वास्तव में एक उदाहरण देता हूं, वास्तव में, मेरे पास संग्रहीत प्रक्रिया में कई अन्य चीजें हैं। मुझे आश्चर्य है कि क्या मुझे स्टोर प्रक्रिया के बाहर तालिका को बदलना है? – GLP

+0

@GolaiPeng - मेरा संपादन – LittleBobbyTables

+1

देखें सामान्य रूप से यह संग्रहीत प्रो के बाहर तालिकाओं को बदलने के लिए एक बेहतर विकल्प है। क्या आप वास्तव में प्रत्येक बार teh proc चलाते हैं या केवल इसे एक बार जोड़ना चाहते हैं? प्लस आप shoudl सभी संरचना schanges एसक्यूएल स्क्रिप्ट के रूप में सहेजा गया है और स्रोत नियंत्रण में डाल दिया ताकि उन्हें प्रोड में स्थानांतरित करने या anotehr सर्वर पर teh डेटाबेस को फिर से बनाने के लिए आसान बनाने के लिए। – HLGEM

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