使用Declare部分中声明的变量(匿名块)

时间:2011-04-19 09:27:40

标签: sql oracle

我想使用一个声明的变量,我在Declare部分声明,在匿名块的Begin End部分,而不使用into语句。那可能吗? E.g

Declare
   week number :=6;
Begin
   select col1,col2+week from table;
end; 

2 个答案:

答案 0 :(得分:3)

由于匿名块无法向调用者返回任何数据,如果执行此块,您希望发生什么?你无法将光标返回给调用者,所以如果你没有将数据选择到局部变量中,我不确定你想要发生什么。

您可能只需要一个SQL * Plus脚本,即

SQL> variable week number;
SQL> exec :week := 6;

PL/SQL procedure successfully completed.

SQL> ed
Wrote file afiedt.buf

  1* select empno, hiredate+:week from emp
SQL> /

     EMPNO HIREDATE+
---------- ---------
      7369 23-DEC-80
      7499 26-FEB-81
      7521 28-FEB-81
      7566 08-APR-81
      7654 04-OCT-81
      7698 07-MAY-81
      7782 15-JUN-81
      7788 25-APR-87
      7839 23-NOV-81
      7844 14-SEP-81
      7876 29-MAY-87

     EMPNO HIREDATE+
---------- ---------
      7900 09-DEC-81
      7902 09-DEC-81
      7934 29-JAN-82
      1234

15 rows selected.

答案 1 :(得分:0)

在不使用INTO的情况下,不可能在oracle pl-sql块中使用select 因为oracle不接受select语句而不使用into语句 所以,修改后你的块会变成这样:

Declare
   week number :=6;
   Column1 table.col1%type;
   Column2 table.col2%type;
Begin
   select col1,col2+week into Column1, Column2 from table;
end;