DECLARE
BEGIN  EXECUTE IMMEDIATE 'create table tmp_mr_lcs (lnt float, lat float)';  INSERT INTO tmp_mr_lcs VALUES(1,1);
    
  COMMIT;
END;为什么执行到INSERT INTO 的时候会报错 tmp_mr_lcs表不存在,而单独运行时没问题,觉得很奇怪,哪位懂的给解决一下,十分感谢

解决方案 »

  1.   


    DECLARE
    BEGIN
      EXECUTE IMMEDIATE 'create table tmp_mr_lcs (lnt float, lat float)';
     execute immediate 'INSERT INTO tmp_mr_lcs VALUES(1,1)';    
      COMMIT;
    END;当你用EXECUTE IMMEDIATE建表时,再用所建之表,
    也应该用execute immediate插入
      

  2.   


    oracle中ddl是自动提交的。 
      

  3.   

    同意2楼用动态SQL建的表,存储过程在编译的时候直接用INSERT INTO通不过,所以只能也用动态SQL
      

  4.   

    SQL> edi
    已写入 file afiedt.buf  1  DECLARE
      2  BEGIN
      3  EXECUTE IMMEDIATE 'create table tmp_mr_lcs (lnt float, lat float)';
      4  EXECUTE IMMEDIATE 'INSERT INTO tmp_mr_lcs VALUES(1,1)';
      5  COMMIT;
      6* END;
    SQL> /PL/SQL 过程已成功完成。SQL> desc tmp_mr_lcs;
     名称                                                                                是否为空? 类型
     ----------------------------------------------------------------------------------- -------- ------
     LNT                                                                                          FLOAT(126)
     LAT                                                                                          FLOAT(126)SQL> select * from tmp_mr_lcs;       LNT        LAT
    ---------- ----------
             1          1