判断表是否存在 
if exists(select table_name from user_tables where table_name='Thyc') hen
drop table Thyc;
end if;
--这句不行
--下面这句也不行
declare
tcnt number;
begin
select count(*) into tcnt from user_tables where table_name='thyc';
if tcnt>1 then
drop table Thyc;
else
dbms_output.put_line('不存在!'); 
end if;
end;
--新手呀,莫笑我

解决方案 »

  1.   

    begin
        c_sql := 'drop table Thyc';
        execute immediate c_sql;
    exception
        when  OTHERS THEN
            IF SQLCODE = -00942 THEN
                dbms_output.put_line('不存在!'); 
            END IF;
    END ;
      

  2.   

    过程里是不能执行DDL操作的,你只能通过动态SQL来完成。
      

  3.   

    select max(rownum) into a from user_tables where UPPER(table_name)=UPPER('thyc')判断a是否为0可以判断
    可能是你的表名的问题
      

  4.   

    declare
    hyc varchar2(4000);
    begin
    hyc:='xxx' || to_Char(222);
    dbms_output.put_line(hyc);
    end;--但是这句也不显示xxx222
      

  5.   

    --这句也同样这样,执行了,但不显示'不存在'
    declare
    c_sql varchar2(4000);
    begin
        c_sql := 'drop table Thyc';
        execute immediate c_sql;
    exception
        when  OTHERS THEN
            IF SQLCODE = -00942 THEN
                dbms_output.put_line('不存在!'); 
            END IF;
    END ;--是不是需要对系统怎么设置一下才可以利用dbms_output.put_line('不存在!'); 
    这个方法打印文本?
      

  6.   

    需要在前面加一句:
     set serveroutput on  dbms_output.put_line() 才可以显示
      

  7.   

    楼上给出的应该是个错别字serveroutput
      

  8.   

    你客户端用的什么工具?好象要在SQL*Plus中才可以看到.
      

  9.   

    绝对没有错!SQL> set serveroutput on
    SQL> begin
      2      DBMS_OUTPUT.PUT_LINE('result');
      3  end; 
      4  /
    resultPL/SQL 过程已成功完成。
      

  10.   

    难怪,我在developer 和 toad for oracle中测试,好的,我去用plus测试一下
      

  11.   

    --依然没结果
    SQL> set serveroutput on
    SQL> declare
      2  c_sql varchar2(4000);
      3  begin
      4      c_sql := 'drop table THYC';
      5      execute immediate c_sql;
      6  exception
      7      when  OTHERS THEN
      8          IF SQLCODE = -00942 THEN
      9          
     10              dbms_output.put_line('不存在!'); 
     11             
     12          END IF;
     13  END ;
     14  set serveroutput on
     15  dbms_output.put_line('hyc');
     16
      

  12.   

    最后一行 打 "/" 表示过程已经结束而且过程中不一定会执行dbms_output.put_line('不存在!'); 阿?可以这样试一下:set serveroutput on
     declare
        c_sql varchar2(4000);
        begin
           dbms_output.put_line('start'); 
            c_sql := 'drop table THYC';
            execute immediate c_sql;
       exception
            when  OTHERS THEN
                IF SQLCODE = -00942 THEN
                
                   dbms_output.put_line('不存在!'); 
                  
               END IF;
       END ;
       /