এসকিউএল সার্ভারে কখন আপনাকে জিও ব্যবহার করা উচিত এবং কখন আপনি আধা-কোলন ব্যবহার করা উচিত?


100

কমান্ডগুলির পরে যখন আমার জিও কীওয়ার্ডটি ব্যবহার করা উচিত এবং কমান্ডের শেষে একটি আধা-কোলন প্রয়োজন কিনা তা নিয়ে আমি সর্বদা বিভ্রান্ত হয়ে পড়েছিলাম। পার্থক্যগুলি কী এবং কেন / কখন আমার সেগুলি ব্যবহার করা উচিত?

আমি যখন এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে জেনারেট স্ক্রিপ্টটি চালিত করি তখন মনে হয় এটি সমস্ত জায়গাতেই জিও ব্যবহার করবে তবে আধা-কোলন নয়।


উত্তর:


93

GOকেবল এসএসএমএসের সাথে সম্পর্কিত - এটি সত্যিকারের লেনদেন এসকিউএল নয়, এটি এসএসএমএসকে GOএককভাবে পৃথক পৃথক ব্যাচের প্রত্যেকটির মধ্যে এসকিউএল স্টেটমেন্টগুলি প্রেরণে পাঠাতে বলে ।

;একটি SQL বক্তব্য বিভেদক, কিন্তু অধিকাংশ অংশ জন্য ইঞ্জিন ব্যাখ্যা করতে পারেন যেখানে আপনার বিবৃতি ভাঙ্গা পর্যন্ত করছে।

প্রধান ব্যতিক্রম এবং স্থান যেখানে ;প্রায়শই ব্যবহৃত হয় তা সাধারণ টেবিল এক্সপ্রেশন বিবৃতি দেওয়ার আগে।


5
জোর দেওয়া GOটি-এসকিউএল অংশ নয় যখন ;রয়েছে
মিসারচেট

2
একটি MERGEবিবৃতি একটি আধা-কোলন দ্বারা সমাপ্ত করা আবশ্যক।
onedaywhen

15
আপডেট: এসকিউএল সার্ভারে 2012 সেমিকোলন ব্যবহার না করা অবনতিহীন, যার অর্থ পরবর্তী সংস্করণে তাদের প্রয়োজন হবে। সুতরাং সেমিকোলনগুলি ব্যবহার করা একটি ভাল অনুশীলন, কারণ অভিবাসনের ক্ষেত্রে এটির জন্য কম পরিশ্রমের প্রয়োজন হবে (এবং কারণ এটি একটি মান)। সূত্র: টেকনিকট.মাইক্রোসফট /en-us/library/ms143729.aspx বা এসকিউএল সার্ভারে বই 2012: শপ.রিলি
পাভেল বুলওয়ান

1
এসকিউএল 2014 এখনও পরবর্তী সংস্করণের জন্য প্রয়োজনীয় হিসাবে সেমিকোলন তালিকাভুক্ত করে। আমি অবাক হয়েছি কখন এটি অবহেলা করা হবে I টেকনেট.মাইক্রোসফট.ইন- ইউএস
ফ্রাঙ্ক

2
+ বুলি যে অবমাননাকৃত তা উল্লেখ ;করে নয়, এটি ব্যবহার করে অবহেলা করা নয়, অর্থাত্ উত্স অনুসারে এটি বাধ্যতামূলক হয়ে উঠছে।
সিজেকে

78

জেনারেটেড ডিডিএল স্ক্রিপ্টগুলিতে আপনি এতগুলি GO দেখার কারণ ব্যাচগুলি সম্পর্কে নিম্নলিখিত নিয়মের কারণ ।

ডিফল্ট তৈরি করুন, ফাংশন তৈরি করুন, পদ্ধতি তৈরি করুন, বিধি তৈরি করুন, ট্রিগার তৈরি করুন, এবং ক্রিয়েট ভিউ বিবৃতিগুলি একটি ব্যাচের অন্যান্য বিবৃতিগুলির সাথে একত্রিত করা যাবে না। তৈরি বিবৃতি অবশ্যই ব্যাচ শুরু করতে হবে। এই ব্যাচে অনুসরণ করা অন্যান্য সমস্ত বিবৃতি প্রথম ক্রিয়েট স্টেটমেন্টের সংজ্ঞার অংশ হিসাবে ব্যাখ্যা করা হবে।

জেনারেটেড ডিডিএল এর ব্যবহারের অন্যতম ক্ষেত্রে একটি একক ফাইলে একাধিক অবজেক্ট তৈরি করা। এ কারণে একটি ডিডিএল জেনারেটর অবশ্যই ব্যাচ তৈরি করতে সক্ষম হবে। অন্যরা যেমন বলেছেন যে জিও বিবৃতি ব্যাচটি শেষ করে।


10
এই একমাত্র তিনি যিনি সত্যই উত্তর দিয়েছিলেন "... আপনার কখন ব্যবহার করা উচিত ...?" প্রশ্নের অংশ।
রোমের

আমার কাছে মনে হয় যে জিও এমন স্টেটমেন্টগুলি সমাপ্ত করে যা এসকিউএলযুক্ত বস্তু তৈরি করে যাতে এতে থাকতে পারে; বিবৃতি টার্মিনেটর। অন্য একটি ডিবিএমএসে আমি সমাপ্তির স্ট্রিং সেট করার ক্ষমতা দেখেছি। উদাহরণস্বরূপ, আপনি উল্লেখ করতে পারেন যে বিবৃতি দুটি পাইপ অক্ষর দিয়ে শেষ হয় || তারপরে আপনি ক্রেট পদ্ধতিটি জারি করতে পারেন ... অনেক এসকিউএল শেষ হয়; ... || এবং ডাবল পাইপ তৈরি প্রক্রিয়া বিবৃতি শেষ। সুতরাং আমার প্রশ্নটি হ'ল এটি এমএস জিও বিবৃতিতে বেহাল? দ্বিতীয়ত, আপনি কি এসকিউএলএসভারের সমাপ্তির স্ট্রিংটিকে নতুন করে সংজ্ঞা দিতে পারেন?
youcantryreachingme

@ ইয়ুকান্ট্রিরিচিংমে আমি জানি না এটি 2010 সালে সত্য ছিল কিনা তবে মনে হয় আপনি তা করতে পারেন। এসএসএমএস দেখুন : ব্যাচ পৃথককারী । এর সীমাবদ্ধতাগুলি কী তা আমি নিশ্চিত নই
কনরাড ফ্রিক্স

34

যাওয়া

গো একটি ব্যাচের বিভাজক। এর অর্থ এই যে ব্যাচের সমস্ত কিছু সেই নির্দিষ্ট ব্যাচের স্থানীয়।

ভেরিয়েবলস, টেবিল ভেরিয়েবলস ইত্যাদির কোনও ঘোষণা GOবিবৃতি জুড়ে যায় না ।

# টিম্প টেবিলগুলি কোনও সংযোগের জন্য স্থানীয়, তাই তারা জিও বিবৃতি জুড়ে স্প্যান করে।

যতিচিহ্নবিশেষ

একটি সেমিকোলন একটি বিবৃতি টার্মিনেটর। এটি বিশুদ্ধরূপে চিহ্নিত করতে ব্যবহৃত হয় যে কোনও নির্দিষ্ট বিবৃতি শেষ হয়েছে।

বেশিরভাগ ক্ষেত্রে স্টেটমেন্টের সিনট্যাক্স নিজেই একটি স্টেটমেন্টের শেষ নির্ধারণ করতে যথেষ্ট।

তবে সিটিই'র দাবি, ডাব্লুইইইইইইইটিইউ প্রথম বিবরণী যাতে আপনার সাথে ডাব্লুটির আগে একটি সেমিকোলন প্রয়োজন।


4
একটি MERGEবিবৃতি একটি আধা-কোলন দ্বারা সমাপ্ত করা আবশ্যক।
onedaywhen

11

আপনার প্রতিটি এসকিউএল স্টেটমেন্টটি শেষ করতে একটি আধা-কোলন ব্যবহার করা উচিত। এটি এসকিউএল স্ট্যান্ডার্ডগুলিতে সংজ্ঞায়িত করা হয়েছে,

অবশ্যই, এসকিউএল সার্ভারের চেয়ে বেশি বার আপনাকে স্টেটমেন্ট টার্মিনেটর বাদ দিতে দেয় তবে খারাপ অভ্যাসে কেন যায়?

অন্যরা যেমন উল্লেখ করেছে, একটি সাধারণ টেবিল এক্সপ্রেশন (সিটিই) এর আগের বিবৃতিটি একটি আধা-কোলন দিয়ে শেষ করতে হবে। ফলস্বরূপ, যে লোকগুলি পুরোপুরি আধা-কোলন টার্মিনেটর গ্রহণ করে নি, আমরা এটি দেখতে পেয়েছি:

;WITH ...

যা আমি মনে করি সত্যিই অদ্ভুত দেখাচ্ছে। আমি মনে করি কোনও অনলাইন ফোরামে এটি উপলব্ধি হয়ে যায় যখন আপনি কোডের মানটি আটকে দিতে পারবেন না।

অতিরিক্তভাবে, একটি MERGEবিবৃতি একটি আধা-কোলন দ্বারা সমাপ্ত করা আবশ্যক। তুমি কি এখানে একটি নমুনা দেখ? এগুলি টিএসকিউএলে আরও কয়েকটি নতুন সংযোজন যা এসকিউএল স্ট্যান্ডার্ডগুলি ঘনিষ্ঠভাবে অনুসরণ করে। দেখে মনে হচ্ছে এসকিউএল সার্ভার টিম আধা-কোলন টার্মিনেটর ব্যবহার বাধ্যতামূলক করার পথে নামছে।


2
" যা আমি মনে করি সত্যিই অদ্ভুত বলে মনে হচ্ছে " - আমি এর সাথে আরও একমত হতে পারি না। এবং এর অবিরাম পুনরাবৃত্তি এই বা এই জাতীয়
a_horse_with_no_name

এসকিউএল সার্ভার আপনাকে ম্লান হতে দেয় না - এটি আপনাকে একটি অপ্রয়োজনীয় স্টেটমেন্ট টার্মিনেটর বাদ দিতে দেয়; অন্যান্য এসকিউএলগুলির মতো টি-এসকিউএলও খাঁটি স্ট্যান্ডার্ড এসকিউএল নয়, যা আরও বিমূর্ত বেস শ্রেণীর মতো - এটি ডিবি ইঞ্জিনের নিজস্ব উপভাষার পক্ষে অনুশীলনে ব্যবহৃত হয় না।
অধ্যাপক

@ প্রফক: আপনার মন্তব্যে বিরামচিহ্ন অন্তর্ভুক্ত করার জন্য আপনাকে ধন্যবাদ, আমার পক্ষে বিশেষত বাক্যটি টার্মিনেটর চরিত্রগুলি পড়া এবং বুঝতে সহজ করে তোলে। যদিও,
হাইফেনগুলির

8

জিও একটি ব্যাচ টার্মিনেটর, একটি আধা-কোলন একটি বিবৃতি টার্মিনেটর।

আপনি যখন 1 স্ক্রিপ্টে একাধিক ক্রয় প্র্যাক্ট স্টেটমেন্ট রাখতে চান তখন আপনি GO ব্যবহার করবেন কারণ ক্র্যাচ প্রোকে ব্যাচের প্রথম বিবৃতি হতে হবে। আপনি যদি সাধারণ টেবিল এক্সপ্রেশন ব্যবহার করেন তবে বিবৃতিটি অর্ধ-কোলন দিয়ে সমাপ্ত করা দরকার


একটি MERGEবিবৃতি একটি আধা-কোলন দ্বারা সমাপ্ত করা আবশ্যক।
onedaywhen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.