Shell脚本嵌入Oracle PL / SQL代码定义绑定变量

时间:2014-01-21 07:19:07

标签: sql oracle bash plsql

如果我运行以下脚本,我收到错误 SP2-0552:绑定变量" OUTRES"没有宣布。 那么,如何定义绑定变量OUTRES以及在何处定义?

#!/usr/bin/bash
sqlplus -s scott/tiger << EOF 
declare ret varchar2(10):= '0';
begin
  begin
    insert into mytab(col1) values(1);
  exception
    when others then
      ret:=ret||'1';
  end;
  select ret into :OUTRES from dual;
end;
/
quit
EOF

2 个答案:

答案 0 :(得分:6)

如果要在sqlplus中声明绑定变量。使用VAR关键字。

sqlplus -s scott/tiger << EOF 
VAR OUTRES NUMBER;
BEGIN
  NULL; /* Your Statements */
END;
/
EOF

您还可以尝试quit :OUTRES

quit :OUTRES
EOF
MYRESULT=$?
echo $MYRESULT

它在UNIX输出返回状态。

#!/usr/bin/bash
sqlplus -s scott/tiger << EOF 
VAR OUTRES NUMBER;
declare ret varchar2(10):= '0';
begin
  begin
    EXECUTE IMMEDIATE 'insert into mytab(col1) values(1)';
  exception
    when others then
      dbms_output.put_line(SQLERRM);
      ret:=ret||'1';
  end;
  :OUTRES := ret;
end;
/
quit :OUTRES
EOF
MYRESULT=$?
echo $MYRESULT

答案 1 :(得分:0)

#!/usr/bin/bash
sqlplus -s scott/tiger << EOF 
declare 
ret varchar2(10):= '0';
OUTRES  varchar2(10);
begin
  begin
    insert into mytab(col1) values(1);
  exception
    when others then
      ret:=ret||'1';
  end;
  select ret into OUTRES from dual;
  dbms_output.put_line('Value of OUTRES is' || OUTRES);
end;
/
quit
EOF