Oracle PL/SQL - 如何转义冒号 (:),在 Connect 中被误解为绑定变量

Oracle PL/SQL - How to escape colon (:), being misinterpreted for bind variable in Connect

我正在尝试在我的 PL/SQL-Scripts 之一中使用来自 Oracle 的 CONNECT 命令。 我想要实现的是能够切换到脚本本身内部的不同上下文(例如,以用户身份登录,然后在某个时候切换到 sys dba)。

我目前的做法如下:

sqlplus user/password@//数据库:1521/orcl @complete.sql

complete.sql

的内容
DECLARE
     -- declare
     v_scriptInserted varchar2(1);
     v_booleanFalse varchar2(1) := '0';
BEGIN
    SELECT CASE WHEN COUNT(*) >= 1 THEN 1 ELSE 0 END INTO v_scriptInserted FROM SCHEMA_HISTORY WHERE SCRIPT = '&v_SCRIPTNAME';
       IF v_scriptInserted = booleanFalse THEN
       -- do Stuff with user privilidges and after this is done switch to sysdba
       CONNECT sys/oracle@database:1521/orcl AS SYSDBA
       -- do magic here with sysdba
       -- SWITCH CONTEXT BACK TO User
       DISCONNECT;
    END IF;
END;
/

但是,无论我如何尝试转义 CONNECT 序列,部分 :1521 都会被误解为 bind varibale (SP2-0552)。

我已经深入研究了堆栈溢出并找到了相关文章: - How to escape ":" in Oracle dynamic SQL and also have bind variables? - Oracle PL/SQL - How to escape colon (:), being misinterpreted for bind variable 然而无论我尝试什么似乎都不起作用。

我目前的做法是:

非常感谢任何帮助。

谢谢,

============================================= =

编辑:

1) CONNECT sys/oracle@"database:1521/orcl"

的想法

1.1) 与“

`CONNECT sys/oracle@"database:1521/orcl" AS SYSDBA
    *
FEHLER in Zeile 16:
ORA-06550: Zeile 16, Spalte 5:
PLS-00103: Encountered the symbol "CONNECT"`

1.2) 与 '

相同
CONNECT sys/oracle@'database:1521/orcl' AS SYSDBA
    *
FEHLER in Zeile 17:
ORA-06550: Zeile 17, Spalte 5:
PLS-00103: Encountered the symbol "CONNECT" when expecting one of the
following

2) 将端口保留为可选端口,因为 1521 是默认端口:

CONNECT sys/oracle@database/orcl AS SYSDBA
    *
FEHLER in Zeile 17:
ORA-06550: Zeile 17, Spalte 5:
PLS-00103: Encountered the symbol "CONNECT" when expecting one of the
following

3) 错过最后一个括号 @(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=database)(PORT=1521))(CONNE‌ CT_DATA=(SID=orcl) )) 作为 SYSDBA

CONNECT sys/oracle@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=database)(PORT=1521))(CONNE‌​CT_DATA=(SID=orcl))) AS SYSDBA
    *
FEHLER in Zeile 17:
ORA-06550: Zeile 17, Spalte 5:
PLS-00103: Encountered the symbol "CONNECT" when expecting one of the
following

CONNECT是一个SQLPLUS命令,不可能在pl\sql块中使用。您必须将其从块中取出并单独放入 sqlplus 脚本文件中(如果需要)。