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

Създайте таблица DDL с Изпълнете незабавно в базата данни на Oracle, част 2

Създаване на таблица DDL с изпълнение незабавно

Има два начина за написване на DDL заявка за създаване на таблица за Изпълнение на незабавно изявление на Native Dynamic SQL в Oracle Database. Вече обсъдихме един от тях в последния урок. Първият начин, който обсъдихме в предишния урок, е може би най-лесният начин за писане на SQL заявка за Dynamic SQL. Но това не ни пречи да учим повече. Така че нека продължим напред и да научим втория.

Така че в този урок ще научим втория метод за писане на CREATE TABLE DDL за динамично изпълнение с помощта на Изпълнение на незабавен израз.

Тъй като този урок е продължение на предишния, ви моля да преминете първо през този блог за по-добро разбиране. Като се има предвид това, нека започнем урока.

Стъпка 1:Подгответе CREATE TABLE DDL.

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

СЪЗДАВАНЕ НА ТАБЛИЦА tut_83 ( tut_num NUMBER(5), tut_name VARCHAR2 (50), CONSTRAINT cons1_col1_pid_pk ОСНОВЕН КЛЮЧ (tut_num) )

Ето нашия CREATE TABLE DDL. С изключение на промененото име и добавеното ограничение за първичен ключ, този DDL е почти подобен на този, който създадохме в последния урок.

Стъпка 2:Напишете PL/SQL блока за динамично изпълнение на DDL израза.

Сега, когато сме подготвили нашия CREATE TABLE DDL. Нека напишем програмата PL/SQL за динамичното й изпълнение.

ЗАДАДЕТЕ ИЗХОД НА СЪРВЪР; ДЕКЛАРИРАЙТЕ ddl_qry VARCHAR2(150);BEGINddl_qry :='СЪЗДАЙТЕ ТАБЛИЦА tut_83('|| 'tut_num NUMBER(3),'|| 'tut_name VARCHAR2(50)'|| ')'; ddl_qry;END;/

Нека видим какво направихме в тази програма.

Раздел Декларация .

ДЕКЛАРИРАНЕ ddl_qry VARCHAR2 (150);

В секцията за декларация на нашия PL/SQL блок ние декларирахме променлива с името ddl_qry. Тази променлива ще държи нашия CREATE TABLE DDL, който ще изпълняваме с помощта на оператора Execute Immediate.

Според последния урок Execute Immediate третира всички SQL изрази като низ от тип данни VARCHAR2. Ето защо бяхме декларирали нашата променлива ddl_qry като тип данни VARCHAR2.

Разделът за изпълнение.

Непосредствено след раздела за декларация имаме нашия раздел за изпълнение, където се случва цялото забавление.

BEGIN ddl_qry :='СЪЗДАВАНЕ НА ТАБЛИЦА tut_83 ('|| 'tut_num NUMBER (5),'|| 'tut_name VARCHAR2 (50),'|| 'CONSTRAINT cons1_col1_pk ОСНОВЕН КЛЮЧ (tut_num)';| ') ИЗПЪЛНЕТЕ НЕЗАБАВНО ddl_qry;END;/

Този раздел за изпълнение се състои само от два оператора:

  1. Изявление за присвояване
  2. Изпълнете незабавно изявление

Първото изявление, което е „Изявление за присвояване“, прави този код различен от предишния. Нека видим какви са тези твърдения.

Изявление 1:Декларация за присвояване.

ddl_qry :='СЪЗДАВАНЕ НА ТАБЛИЦА tut_83 ('|| 'tut_num NUMBER (5),'|| 'tut_name VARCHAR2 (50),'|| 'CONSTRAINT cons1_col1_pk ОСНОВЕН КЛЮЧ (tut_num)'<| ')'; /предварително> 

Това е единственото твърдение, което прави тази PL/SQL програма различна от тази, която видяхме в предишния урок.

В това изявление ние присвояваме CREATE TABLE DDL на променливата ddl_qry. И така, какво е различното тук?

В предишния метод затворихме целия ни DDL израз в двойка единични кавички ( ‘’). Като това

ddl_qry:='СЪЗДАВАНЕ НА ТАБЛИЦА tut_82 ( tut_num NUMBER(3), tut_name VARCHAR2 (50) )';

Първият начин за писане на DDL заявка

Докато тук, във втория метод, вместо да обвиваме цялата заявка в единични кавички, първо я разделихме на множество низове от VARCHAR2. Това направихме, като обвихме всеки един ред от заявката в единични кавички. След това ги обединихме с помощта на оператор за конкатенация ( || ), така че PL/SQL машината да ги изпълни като едно цяло.

Можете да гледате подробна демонстрация на този подход break and conquer за динамично изпълнение във видеоурока.

Препоръчително четене:Concat функция срещу Concat оператор.

Изявление 2:Изпълнете незабавно изявление.

Вторият ни оператор е операторът Execute Immediate. Той изпълнява всеки SQL оператор, който връща динамично един ред от резултата. В нашия случай този израз изпълнява CREATE TABLE DDL заявка чрез PL/SQL блок.

Има само два начина за изпълнение на DDL израз чрез PL/SQL блок в Oracle Database. Или чрез използване на пакет DBMS_SQL, или Изпълнете незабавно на Native Dynamic SQL. Прочетете тук, за да разберете какво още можете да правите, като използвате Execute Immediate.

За да изпълните динамично DDL, първо трябва да напишете запазената фраза „Изпълни незабавно“. Следва името на променливата, в която сте съхранили своя DDL, както направихме по-горе.

Проверете дали таблицата е създадена или не.

Има много начини да проверите дали PL/SQL блокът е изпълнил CREATE TABLE DDL успешно или не. Но тук ще ви покажа двата най-лесни и популярни начина.

Използване на команда DESCRIBE

Най-лесният начин да проверите дали PL/SQL блокът е създал таблицата tut_83 успешно или не, е като използвате командата DESCRIBE. Командата Describe показва структурата на споменатата таблица, само ако съществува, в противен случай връща грешка.

Нека опитаме това

DESCRIBE tut_83;Или DESC tut_83

Ако при изпълнение на горната команда describe видите структурата на таблицата tut_83, това означава, че горният PL/SQL блок е създал успешно таблицата. Но в случай, че получите грешка, това означава, че сте объркали някъде и изпълнението на PL/SQL блока не е успешно.

Използване на ALL_OBJECTS речник с данни.

Можете също да потърсите ALL_OBJECTS речник с данни. Това помага да разберете дали желаната таблица или друг обект, който се опитвате да създадете, е създаден или не. Като това

SELECT 'Създадохме таблица с име '||име_на_обект||' в ' ||собственик||' схема на '||createdFROM all_objects WHERE object_name ='TUT_83';

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

Още нещо, преди да приключите този урок. Моля, прочетете предишния блог за по-добро разбиране на това, както и предстоящите уроци.

Това е урокът за PL/SQL за втория начин за писане на CREATE TABLE DDL за изпълнение на непосредствена инструкция на 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. ORA-06508:PL/SQL:не можа да намери извикан програмен модул

  2. GWFG в Oracle RAC

  3. SQL:Как да намеря дубликати въз основа на две полета?

  4. Oracle Изтриване на редове, съвпадение на множество стойности

  5. Стъпка по стъпка R12.2.6 Инсталиране на EBS на Virtual Box