使用可变 Oracle
Using Variable- Oracle
在上面的代码中,我将 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 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:
任何人都可以建议如何使用假脱机使其工作
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 时,没有理由 运行 编写脚本。你到底想达到什么目的?
exec[ute]
是 SQL*Plus 和 SQL 开发人员(可能还有其他客户)shorthand 用于匿名块。它是一个 client 命令,它不是 PL/SQL 的一部分。您正试图在 PL/SQL 声明部分中使用它,但它无效或无法识别。
如果你想要一个客户端绑定变量,你需要 var[iable]
command:
var schemaname varchar2(20);
exec :schemaname := '&1';
BEGIN
...
注意 &1
周围的单引号,因为它被分配给一个字符串变量。
但是您也不能在 PL/SQL 块内连接,也不能使用绑定变量进行连接。
connect :schemaname
将提示输入密码(即使您将其值定义为 user/passwd
)并尝试以名为 :schemaname
.
的用户身份进行连接
你可以使用替换变量,但你真的不需要定义一个新的;正如您似乎正在传递凭据一样,您可以这样做:
connect &1
(不带引号)
在上面的代码中,我将 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 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:
任何人都可以建议如何使用假脱机使其工作
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 时,没有理由 运行 编写脚本。你到底想达到什么目的?
exec[ute]
是 SQL*Plus 和 SQL 开发人员(可能还有其他客户)shorthand 用于匿名块。它是一个 client 命令,它不是 PL/SQL 的一部分。您正试图在 PL/SQL 声明部分中使用它,但它无效或无法识别。
如果你想要一个客户端绑定变量,你需要 var[iable]
command:
var schemaname varchar2(20);
exec :schemaname := '&1';
BEGIN
...
注意 &1
周围的单引号,因为它被分配给一个字符串变量。
但是您也不能在 PL/SQL 块内连接,也不能使用绑定变量进行连接。
connect :schemaname
将提示输入密码(即使您将其值定义为 user/passwd
)并尝试以名为 :schemaname
.
你可以使用替换变量,但你真的不需要定义一个新的;正如您似乎正在传递凭据一样,您可以这样做:
connect &1
(不带引号)