Oracle
 sql >> база данни >  >> RDS >> Oracle

Въведение в Native Dynamic SQL в Oracle Database

Собствен динамичен SQL

Преди да започнете да изучавате Native динамичен SQL, кратка история е важна. Oracle направи подарък в средата на лятото през май 1994 г. на всички разработчици, като представи концепцията на Dynamic SQL в своята база данни версия 7.1 (известна още като Oracle 7.1). С това даде възможност на разработчиците да напишат динамичния SQL чрез пакет „DBMS_SQL“.

Но постепенно библиотеката DBMS_SQL започна да губи своя чар. Поради своите „не толкова лесни“ синтаксиси, „бавна производителност“ и „неподдържани потребителски дефинирани типове“. Всички тези недостатъци породиха нуждата от нещо друго. Което би могло да помогне на разработчиците да напишат добре оптимизиран код, без да натоварват умовете им.

Oracle отне време, почти пет години. И накрая, той пусна подобрена версия на Dynamic SQL с пускането на Oracle Database 8i или по-точно Oracle Database версия 8.1.5 през февруари 1999 г. Поради стабилното си естество, тази подобрена версия на Dynamic SQL стана родната част на PL/ SQL език и получи името си "Native Dynamic SQL", чрез което е известен днес. Това е кратко въведение в генезиса на естествения динамичен SQL в Oracle Database.

За да разберем естествения динамичен SQL, първо трябва да разберем какво е статичен SQL в Oracle Database?

Какво е статичен SQL?

Както подсказва името, всеки SQL израз, който не се променя по време на изпълнение, се нарича статичен SQL израз.

Предимството на статичните SQL оператори е, че вече знаем дали всички зависими обекти, върху които пишем оператора, присъстват или не. Друго предимство на статичните SQL оператори е, че ги кодираме твърдо в нашето приложение. Така можем да ги настроим за оптимална производителност.

След като научихме какво е статичен SQL, нека видим какво е динамичен SQL?

Какво е Native Dynamic SQL?

Отново, както подсказва името, всеки SQL израз, който е конструиран по време на изпълнение, се нарича динамичен SQL . Тези твърдения се изграждат в движение. Следователно те не могат да бъдат твърдо кодирани в приложението. Това от своя страна увеличава тяхната гъвкавост.

От една страна, статичният SQL ви позволява да изпълнявате само DML изрази във вашия PL/SQL блок. От друга страна динамичният SQL ви позволява да изпълнявате DDL оператори и това също във вашия PL/SQL блок. По този начин, като използвате Dynamic SQL, можете да създадете таблица или да пуснете индекс или да съкратите вашата таблица точно във вашия PL/SQL блок. Това е предимство на Native Dynamic SQL пред статичния SQL.

Какво е Native Dynamic PL/SQL?

Подобно на динамичния SQL, процесът на конструиране на PL/SQL код по време на изпълнение се нарича динамичен PL/SQL.

Сега нека да разгледаме предимствата на Native Dynamic SQL пред пакета DBMS_SQL в Oracle Database.

Предимства на Native Dynamic SQL

  • Лесни за използване кодове: В сравнение с пакета DBMS_SQL, естественият динамичен SQL е много лесен за използване. Това е главно защото е включено в самия SQL. Това е еквивалентно на използването на статичен SQL в PL/SQL код. Също така естественият динамичен SQL код е по-компактен и четим от пакета DBMS_SQL. Последното изисква голямо количество кодове поради строги последователни процедури. Това го прави по-сложен.
  • Подобряване на производителността на кода: Има вградена поддръжка за естествен динамичен SQL в PL/SQL интерпретатора. По този начин програмите, които го използват, са по-ефективни от тези, използващи пакета DBMS_SQL. Основно естественият динамичен SQL комбинира стъпките, включващи подготовка, свързване и изпълнение в една операция. Това намалява разходите за извикване на процедурата и копиране на данни, което от своя страна подобрява производителността.
  • Поддръжка за потребителски дефинирани типове: За разлика от пакета DBMS_SQL, естественият динамичен SQL поддържа всички видове дефинирани от потребителя типове. Например дефинирани от потребителя обекти, REF и колекции.
  • Поддръжка за извличане в записи: Редовете, които са резултат от заявка, могат да бъдат директно извлечени в PL/SQL записи с помощта на естествен динамичен SQL. Това не е възможно с пакета DBMS_SQL.

Какви са функционалностите на Dynamic SQL в Oracle Database?

  1. Първо, динамичен DDL и DML с използването на всяка променлива за свързване.
  2. На второ място, Dynamic DQL и
  3. На трето място, динамичен DML, използващ известен списък с променливи за свързване

Това са трите функции, които Dynamic SQL добавя към вашето PL/SQL програмиране.

И така, как да използваме динамичен SQL в Oracle Database?

Двата най-често срещани метода за използване на динамичен SQL и PL/SQL в Oracle Database са:

  1. Изпълнете незабавно изявление и
  2. Блок за отваряне, извличане и затваряне.

Изпълнение Immediate се използва, когато заявката връща данни от един ред. В случай, че заявката връща многоредови данни, тогава можете да се възползвате от блока Open-For, Fetch и close. В предстоящите уроци ще научим подробно за Изпълнение на незабавно и отваряне за, извличане и затваряне на блока.

Има ли други начини за използване на Dynamic SQL в Oracle Database?

Освен гореспоменатите най-често използвани методи, другите начини за използване на динамичен SQL или PL/SQL са

  • С групово извличане
  • Второ с Bulk Execute Immediate
  • Заедно с Bulk FORALL и
  • Накрая с изявление за групово събиране в

Научихме всички горепосочени команди и изрази в предишната серия за обработка на масивни данни.

Ако обичате да учите чрез видеоурок, продължете да го разгледате.

Това е подробно въведение в Native Dynamic SQL в Oracle Database. Надявам се, че ви е харесало четенето. Уверете се, че Споделете връзката на този блог с приятелите си във вашите социални медии. Също така не забравяйте да се абонирате за канала в YouTube, за да следите тази поредица и да научите нещо ново и интересно.

Благодаря и приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Клауза BETWEEN срещу <=И>=

  2. LOG() Функция в Oracle

  3. Значение на байтовете за изхвърляне (systimestamp) на Oracle

  4. Как да използвам параметри в клауза 'where value in...'?

  5. ORA-00900:невалиден SQL израз - когато стартирате процедура в oracle 10g