环境:在PL/SQL里执行SQL:
begin
IF not exists (select 1 from sysobjects where id = object_id('objectprepos_def') and type = 'U') then 
    create table objectprepos_def(
            dxbh  number(5) not null, 
            dxmc  varchar2(30) not null,
            dxsm  varchar2(40) not null, 
            dxlx  number(3) not null,
            fdxbh number(5) not null,
            ipdz  varchar2(20) default null, 
            dkh   number(6)  default 0, 
            lxjg  number(4) default 0,
            lxbz  number(1) default 0, 
     city_id varchar2(20) default null,
            wz    varchar2(128)  default null, 
            key0  number(10) default 0,
            key1  number(10) default 0,
            key2  number(10) default 0,
            key3  number(10) default 0,
            constraint objectprepos_def_p primary key(dxbh)
    )tablespace tbs_hostman;
  end if;
  end;---------------------------------------------------
ORA-06550: 第 3 行, 第 5 列: 
PLS-00103: 出现符号 "CREATE"在需要下列之一时:
 begin case declare exit
   for goto if loop mod null pragma raise return select update
   while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge
   <a single-quoted SQL string> pipe是不是语法不对阿?
谢谢指点,感激不尽,在线等答案~~~

解决方案 »

  1.   

    IF not exists (select 1 from sysobjects where id = object_id('objectprepos_def') and type = 'U') --
    貌似sqlserver语法
      

  2.   

    DECLARE
    V_i INTEGER;
    BEGIN
    SELECT COUNT(*) INTO v_i
     FROM user_objects WHERE object_type='TABLE' AND OBJECT_NAME='TABLENAME';
    IF v_i =0  THEN
     创建表
     DBMS_OUTPUT.PUT_LINE('0');
    END IF;
    END;
      

  3.   

    DECLAREV_i INTEGER;
    v_sql VARCHAR2(200);
    BEGIN
    SELECT COUNT(*) INTO v_i
     FROM user_objects WHERE object_type='TABLE' AND OBJECT_NAME='LL_0001';
    IF v_i =0  THEN
    v_sql:='CREATE TABLE ll_0001(dxbh  NUMBER(5) NOT NULL)';
    EXECUTE IMMEDIATE v_sql;
    END IF;
    END;
    --
    DROP TABLE ll_0001;