Я новичок в Oracle DB 18c (исходя из MS SQL Server), и я хочу создать подключаемую базу данных, если она еще не существует.
Я прочитал многочисленные спецификации об управляющих операторах, СОЗДАТЬ ПОДКЛЮЧАЕМУЮ БАЗУ ДАННЫХ и УДАЛИТЬ ПОДКЛЮЧАЕМУЮ БАЗУ ДАННЫХ, и, согласно этим документам, я считаю, что все сделал правильно.
Но когда я выполняю следующий скрипт, используя Oracle 18c XE SQLPlus REPL в Linux с помощью @/tmp/test.sql
:
ALTER SESSION SET CONTAINER=CDB$ROOT;
DEFINE DB_NAME = 'MYDB'
DEFINE DB_ADMIN = 'sa'
DEFINE DB_PWD = 'myPwd'
BEGIN
IF SELECT COUNT(*) FROM v$pdbs WHERE name = '&DB_NAME' > 0 THEN DROP PLUGGABLE DATABASE &DB_NAME INCLUDING DATAFILES; END IF;
END;
CREATE PLUGGABLE DATABASE &DB_NAME ADMIN USER &DB_ADMIN IDENTIFIED BY &DB_PWD ROLES=(dba);
SQLPlus выводит:
SQL> @/tmp/test.sql
Session altered.
6
... и не продолжается оттуда.
Что я сделал не так?
PS: рассматриваемая база данных уже существует, поэтому ее следует сначала удалить, а затем создать заново.
/
) в отдельной строке, чтобы завершить и запустить ваш PL /блок SQL. Но вы не можете запускать DDL статически из PL/SQL; операторdrop
должен быть динамическим SQL. - person Alex Poole   schedule 24.05.2021