আমরা কেন পিএল / এসকিউএল ব্লকে সরাসরি ডিডিএল বিবৃতি লিখতে পারি না


11

কেন আমরা সরাসরি পিএল / এসকিউএল ব্লকে ddl বিবৃতি লিখতে পারি না, উদাহরণস্বরূপ আমি যখন লিখি

CREATE OR REPLACE PROCEDURE test IS
BEGIN
    truncate table table_name; // error
END test;
/

কিন্তু,

CREATE OR REPLACE PROCEDURE test IS
BEGIN
    execute immediate 'truncate table table_name'; // works fine
END test;
/

দ্বিতীয়টি কেন সফলভাবে মৃত্যুদন্ড কার্যকর করা হয়েছে?


উত্তর:


7

যেমনটি ডকুমেন্টেশনে বলা হয়েছে :

কেবল ডায়নামিক এসকিউএলই পিএল / এসকিউএল প্রোগ্রাম ইউনিটের মধ্যে নিম্নলিখিত ধরণের বিবৃতি কার্যকর করতে পারে:

  • ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ (ডিডিএল) যেমন স্ট্রিট, ড্রপ, গ্রান্ট, এবং রিভোকের বিবৃতি

একটি TRUNCATEঅপারেশন হয় DDL

ব্যবহার করার সময় EXECUTE IMMEDIATE, মনে রাখবেন যে DDLআপনার কার্যকর করা কোনও অপারেশন সুস্পষ্টভাবে COMMITবর্তমান লেনদেন করবে will


1

পিএল / এসকিউএল কোডের ভিতরে ডিডিএল বাস্তব প্রয়োজনের চেয়ে বেশি ব্যতিক্রম। পার্সকে কাঠামো যাচাইকরণ হিসাবে দেখা যেতে পারে, যা যদি আপনার কাঠামোর প্রয়োগে পরিবর্তন হয় lost পদ্ধতিগুলি আবার অন্য বস্তু (টেবিল, বা অন্যান্য pl / sQL কোড, ভিউ ইত্যাদি) পার্স করার উদ্দেশ্যে। প্রতিবার অবজেক্টের পরিবর্তনের উপর নির্ভর করে এটি পুনরায় সংযুক্ত করা উচিত। সুতরাং, পরিবর্তনের কাঠামোর চেয়ে কোনও কিছুর পার্সড কোড তৈরি করা যাচাই করা যায় না এবং যেমন সংকলিত হয়। কেস বিবেচনা করুন

DROP TABLE T1;

বিশ্লেষণের সময়, সারণী সন্ধান করা হবে এবং প্রক্রিয়াটি সফলভাবে সংকলিত হয়েছে তবে 1 ম কার্যকরায় টেবিলটি বাদ দেওয়া হবে এবং আপনার কোডটি আর বৈধ নয় (পরের বার ড্রপ টেবিলের ফলে ত্রুটি হবে) error একইভাবে, টেবিল ডিডিএলে কোনও পরিবর্তন পুনরায় সংযোগের প্রয়োজন তৈরি করবে, সুতরাং কোড পার্সিংয়ের সুবিধা হারাবে।

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