使用变量-Oracle
在上面的代码中,我将schemaname作为输入,并使用该输入连接到数据库。但是在本例中,我输入的值不是由schemaname获取的。这是输出和错误的方式:使用变量-Oracle,oracle,function,stored-procedures,plsqldeveloper,Oracle,Function,Stored Procedures,Plsqldeveloper,在上面的代码中,我将schemaname作为输入,并使用该输入连接到数据库。但是在本例中,我输入的值不是由schemaname获取的。这是输出和错误的方式: declare schemaname varchar2(20); exec :schemaname := XYZ; BEGIN end; Error report - ORA-06550: line 2, column 6: PLS-00103: Encountered the symbol "" when expecting one
declare schemaname varchar2(20);
exec :schemaname := XYZ;
BEGIN
end;
Error report -
ORA-06550: line 2, column 6:
PLS-00103: Encountered the symbol "" when expecting one of the following:
constant exception <an identifier>
<a double-quoted delimited-identifier> table long double ref
char time timestamp interval date binary national character
nchar
ORA-06550: line 4, column 1:
PLS-00103: Encountered the symbol "CONNECT" when expecting one of the following:
声明schemaname varchar2(20);
exec:schemaname:=XYZ;
开始
结束;
错误报告-
ORA-06550:第2行第6列:
PLS-00103:在预期以下情况时遇到符号“”:
恒定异常
表长双参考
字符时间戳间隔日期二进制国家字符
固定长度
ORA-06550:第4行第1列:
PLS-00103:在预期以下情况时遇到符号“连接”:
有人能建议如何使用spool使其工作吗在
declare
和end
之间的代码是PL/SQL。像CONNECT
或SPOOL
这样的命令是SQL*Plus命令。不能在PL/SQL块中使用SQL*Plus命令
在您的情况下,根本不需要PL/SQL:
创建包含以下内容的脚本
connect &1
spool C:\ABC
@c:\ABC
spool off;
然后运行它
@your_script_name
顺便说一句:在后台运行脚本c:\ABC时,没有理由运行它。你到底想实现什么?在
declare
和end
之间的代码是PL/SQL。像CONNECT
或SPOOL
这样的命令是SQL*Plus命令。不能在PL/SQL块中使用SQL*Plus命令
在您的情况下,根本不需要PL/SQL:
创建包含以下内容的脚本
connect &1
spool C:\ABC
@c:\ABC
spool off;
然后运行它
@your_script_name
顺便说一句:在后台运行脚本c:\ABC时,没有理由运行它。您到底想要实现什么?是SQL*Plus和SQL Developer(可能还有其他客户机)对匿名块的简写。它是一个客户机命令,不是PL/SQL的一部分。您正试图在PL/SQL声明部分中使用它,该部分无效或无法识别
如果需要客户端绑定变量,则需要:
注意&1
周围的单引号,因为它被分配给字符串变量
但是您也不能在PL/SQL块内连接,也不能使用绑定变量进行连接
connect :schemaname
将提示输入密码(即使您将其值定义为user/passwd
),并尝试以用户身份进行连接,该用户被称为:schemaname
可以使用替换变量,但实际上不需要定义新变量;由于您似乎正在传递凭据,您可以执行以下操作:
connect &1
(不带引号)是SQL*Plus和SQL Developer(可能还有其他客户端)对匿名块的缩写。它是一个客户机命令,不是PL/SQL的一部分。您正试图在PL/SQL声明部分中使用它,该部分无效或无法识别
如果需要客户端绑定变量,则需要:
注意&1
周围的单引号,因为它被分配给字符串变量
但是您也不能在PL/SQL块内连接,也不能使用绑定变量进行连接
connect :schemaname
将提示输入密码(即使您将其值定义为user/passwd
),并尝试以用户身份进行连接,该用户被称为:schemaname
可以使用替换变量,但实际上不需要定义新变量;由于您似乎正在传递凭据,您可以执行以下操作:
connect &1
(不带引号)由于未给出后缀,假脱机将默认为
C:\ABC.LST
;@
将默认为C:\ABC.SQL
。所以它们不是同一个文件。我希望看到至少完整的spool名称,以避免混淆…spool将默认为C:\ABC.LST
,因为没有给出后缀;@
将默认为C:\ABC.SQL
。所以它们不是同一个文件。我希望看到至少完整的假脱机名称,以避免混淆。。。