在sql plus,pl/sql dev,toad中都可以执行,执行不了的话看看你的pl/sql块是否写的正确,

解决方案 »

  1.   

    PL/SQL的语句你写到function或proceduer中,再执行该函数或过程pl/sql dev是个程序,pl/sql developer网上有下载.
      

  2.   

    pl/sql developer是一个开发工具。与sql*plus性质相同
    已连接到 Oracle8i Enterprise Edition Release 8.1.6.0.0 
    已连接为 kdcnew
    SQL> 
    SQL> --此PL/SQL块的功能为:清除掉连接时间超过6小时未使用的会话
    SQL> DECLARE
      2    TYPE V_CURSOR IS REF CURSOR;
      3    MYCUR V_CURSOR;
      4    V_DDL VARCHAR2(2000);
      5  BEGIN
      6    OPEN MYCUR FOR
      7      SELECT 'alter system kill session ''' || SID || ',' || SERIAL# || ''';'
      8        FROM V$SESSION
      9       WHERE USERNAME IS NOT NULL
     10         AND STATUS = 'INACTIVE'
     11         AND LAST_CALL_ET / 60 / 60 >= 6;
     12    LOOP
     13      FETCH MYCUR
     14        INTO V_DDL;
     15      EXIT WHEN MYCUR%NOTFOUND;
     16      EXECUTE IMMEDIATE V_DDL;
     17    END LOOP;
     18    CLOSE MYCUR;
     19  END;
     20  /PL/SQL 过程成功完成SQL>
      

  3.   

    在sql plus,pl/sql development都能执行
      

  4.   

    if else end if
    只能够在匿名快 declare .. begin ..end; 
    或者function/procedure/package/trigger中执行. 在其他的地方就会报错.如果想在sql语句中实现, 且数据库的版本在oracle817以上可以考虑使用case when end字句