2011-04-19 61 views
0

我想使用已声明的变量,即我中声明部分声明,使用开始匿名块的结束部分与伸到statement.Is那可能宣布?? E.g使用变量中声明部分(匿名块)

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

回答

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. 
+0

请向我提供的脚本在SQL导航 – SouravM 2011-04-19 10:33:01

+0

@SouravM - 做es SQL Navigator支持SQL * Plus替换变量语法?如果没有,它是否有它自己的语法?许多GUI将至少支持SQL * Plus语法的一个子集。 – 2011-04-19 13:51:32

0

这是不可能在Oracle PL-SQL块使用选择不使用INTO
因为甲骨文不接受不使用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;