定义SQL Plus变量

时间:2018-06-14 04:13:10

标签: sql oracle sqlplus

我在SQL Plus中使用命令创建变量:

Variable getstatus number
Begin
:getstatus:= select trim(status) from AML.amletl_load_status where mov_date 
in(select max(mov_date) mov_date from AML.amletl_load_status);
End;
/

提出

  

PLS-00103:在期待其中一个时遇到符号“SELECT”   以下:< - + case mode not null a double-quoted delimited -   标识符继续平均计数...

     

PLS-00103:遇到符号   “END”。

2 个答案:

答案 0 :(得分:0)

你应该select

into :variable_name
     ^
     | colon sign here

基于Scott模式的示例:

SQL> var getstatus number
SQL>
SQL> begin
  2    select max(empno) into :getstatus from emp
  3      where deptno in (select min(deptno) from dept);
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> print getstatus

 GETSTATUS
----------
      7934

SQL>

应用于您的代码:

Variable getstatus number

Begin
  select trim(status) into :getstatus from AML.amletl_load_status 
    where mov_date in (select max(mov_date) mov_date from AML.amletl_load_status);
End;
/

答案 1 :(得分:0)

您无法分配"选择"的输出。变量为:

"variable:= select;"

但是,您可以使用" INTO"将此值赋值为变量的子句:

"select x into v_x"

当您将select的输出分配给bind变量时,您必须使用":"带有INTO子句的前缀如下:

Variable getstatus number;

Begin
select trim(status)
  into :getstatus
from AML.amletl_load_status where mov_date 
in(select max(mov_date) mov_date from AML.amletl_load_status);
End;
/