এসকিউএল * প্লাস কমান্ডের শেষে একটি সেমিকোলনের তাৎপর্য কী?


16

টেবিল তৈরি করা, sertোকানো ইত্যাদির মতো কিছু বিবৃতি শেষে একটি সেমিকোলন নেয়:

CREATE TABLE employees_demo
    ( employee_id    NUMBER(6)
    , first_name     VARCHAR2(20)
    , last_name      VARCHAR2(25) 
         CONSTRAINT emp_last_name_nn_demo NOT NULL
    ) ;

অন্যরা পছন্দ করেন

set echo on
connect system/manager

সেমিকোলন ছাড়াও যেতে হবে।

এর পিছনে যুক্তি কী? আমি কীভাবে নিজেকে স্থির করতে পারি সেমিকোলনটি কোথায় রাখব এবং কোথায় নেই?


6
+1 জিনিসগুলিকে আরও বিভ্রান্ত করার জন্য আপনি নীচের লাইনে / এর পরিবর্তে / ব্যবহার করতে পারেন; কিছু ক্ষেত্রে।
bernd_k

উত্তর:


15

স্থানীয় দৃষ্টান্তের কমেন্টরা প্রত্যাবর্তনের সময় সম্পাদন করে। সেমিকোলনে সার্ভারের মাল্টি-লাইন কমান্ডগুলি কার্যকর করে

এসকিউএল * প্লাস ম্যানুয়ালটিতে বিশদ হিসাবে বিশেষ কমান্ডগুলি কেবলমাত্র সেমি-কোলন গ্রহণ করে না। সার্ভার দ্বারা বিশ্লেষণ করার জন্য Wheras এসকিউএল কমান্ডগুলি অবশ্যই একটি দিয়ে শেষ ;হবে।


কমান্ডের শেষে থাকা সেমিকোলনটি এসকিএল সার্ভারে ওএসকিউএল / এসকিউএলসিএমডি এক্সিকিউট হওয়া কমান্ডের শেষে জিও স্টেটমেন্টের সমান। এটি হ'ল কমান্ডটি বিশ্লেষণ এবং সম্পাদন করা হবে exec
মেরিয়ান

7

আপনি যখন এসকিউএল * প্লাসে কোনও এসকিউএল বিবৃতি প্রবেশ করছেন, তখন এটি কখন আপনার সম্পন্ন হয়েছে তা জানতে হবে, বিশেষত যদি কমান্ডটি একাধিক সারি বিস্তৃত করে। সুতরাং এটির জন্য একটি টার্মিনাল অক্ষর অক্ষর প্রয়োজন যা এটির সাথে সেট করা যায় set sqlterminator। ডিফল্টরূপে, এই অক্ষরটি সেমিকোলন:

SQL> select *
  2  from
  3  dual;

D
-
X

এখন, এই টার্মিনাল চরিত্রটিকে একটিতে পরিবর্তন করা #:

SQL> set sqlterminator #
SQL> select *
  2  from
  3  dual#

D
-
X

এসকিউএল স্টেটমেন্টটি a দিয়ে শেষ হয়েছিল (শেষ কার্যকর হয়েছিল) #

আপনি জিজ্ঞাসা করছেন: কেন set sqlterminator #সেমিকোলন অনুসরণ করা হয়নি? উত্তর, কারণ এটি কোনও এসকিউএল বিবৃতি নয়। এসকিউএল * প্লাস সম্পর্কিত এবং এর আচরণ, আউটপুট, সংযোগ asf (যেমন set echo onএবং connect system/manager) সম্পর্কিত যে বিবৃতিগুলি এসকিউএল বিবৃতি নয় এবং সেমিকোলন ছাড়াই প্রবেশ করা হয়।

এর সাথে কী করার আছে /?

আপনি যখন কোনও এসকিউএল স্টেটমেন্ট প্রবেশ করেছিলেন, এসকিউএল * প্লাস এমন কিছু পূরণ করেছিল যা এটি বাফার বলে। এই বাফারটি listকমান্ডের সাহায্যে প্রদর্শিত হতে পারে :

SQL> list
  1  select *
  2  from
  3* dual
SQL>

(দ্রষ্টব্য: আমি কেবল তালিকাটি প্রবেশ করলাম , বাকীটি ফিরে এসেছে)

/এখন executes কি বাফারে বর্তমানে। এটি চেষ্টা করে দেখুন:

SQL> /

D
-
X

যেমন দেখা যায়, একই ক্যোয়ারী কার্যকর করা হয়।


2

সেমিকোলনটি এসকিউএল পার্সারের সিকোয়েন্স পয়েন্ট , যেখানে এসকিউএল * প্লাসের মধ্যে কার্যকর হওয়া কমান্ডগুলি তত্ক্ষণাত কার্যকর করা হয়। সাদৃশ্য হিসাবে, একটি সি প্রোগ্রামের সেমিকোলনগুলি শেলটিতে প্রবেশ করা কমান্ডের সাথে তুলনা করুন।


0

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

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