1

我有一个通过 sqlplus 运行多个 sql 文件的 bash 脚本:

sqlplus $connectioninfo << end
start file1.sql
start file2.sql
start file3.sql $variable
quit
end

file3 有一些 PL/SQL:

BEGIN

  DBMS_OUTPUT.PUT_LINE(&1);

END;
/

但它只是打印文字"&1"而不是$variable. 我还在file3中尝试了以下内容:

DEFINE var_a = &1;
BEGIN

  DBMS_OUTPUT.PUT_LINE(var_a);

END;
/

还有以下内容:

DECLARE
  var_b VARCHAR2(64) := &1;

BEGIN

  DBMS_OUTPUT.PUT_LINE(var_b);

END;
/

最后:

DEFINE var_a = &1;

DECLARE
  var_b VARCHAR2(64) := var_a;

BEGIN

  DBMS_OUTPUT.PUT_LINE(var_b);

END;
/

但是,我收到了各种错误,或者只是所有这些错误的文字值“&1”。

4

1 回答 1

3

尝试添加SET DEFINE ON到脚本的开头file3.sql

如果SET DEFINEON,SQL*Plus 将&...用它们的值替换替换参数。如果SET DEFINEOFF(它似乎适合您),SQL*Plus 不会这样做。

于 2013-03-21T22:24:00.713 回答