当前位置: 代码迷 >> Oracle开发 >> 在PL/SQL Developer中为什么看不到自己建的表呢
  详细解决方案

在PL/SQL Developer中为什么看不到自己建的表呢

热度:79   发布时间:2016-04-24 07:24:46.0
在PL/SQL Developer中为啥看不到自己建的表呢?
PL/SQL Developer 执行以下PL/SQL语句:

SQL code
--创建无参存储过程CREATE OR REPLACE FUNCTION CreateTables RETURN VARCHAR2 IS    --声明语句段    v_SQL varchar2(10000);BEGIN    --执行语句段    /*Create by zjc  2012-06-29指标分解总表*/v_SQL :=  'create table TB_TGT_DECOM_TABLES(  id     VARCHAR2(40) not null,  prod_type   NUMBER(4),   designer      VARCHAR2(40),    year    NUMBER(5),   name    VARCHAR2(40),   pro_comment VARCHAR2(200)  ) ';execute immediate v_SQL;commit;END CreateTables;declare  str varchar2(1000);   CURSOR tname_cursor IS   SELECT table_name   FROM user_tables   where table_name like 'TB_TGT_%';      begin       CreateTables();  END; 


  执行中无错误发生,然后新开一个窗口查询自己新建的表:
SQL code
 SELECT table_name   FROM user_tables   where table_name like 'TB_TGT_%';


  什么结果也查询不到。直接使用创建表的语句:

SQL code
create table TB_TGT_DECOM_TABLES(  id     VARCHAR2(40) not null,  prod_type   NUMBER(4),   designer      VARCHAR2(40),    year    NUMBER(5),   name    VARCHAR2(40),   pro_comment VARCHAR2(200)  )


  这个倒是可以查询得到新建的表。为何用PL/SQL语句建表不成功呢?







------解决方案--------------------
看下all_tables下创建表的owner是谁
------解决方案--------------------
也有可能是lz打开了两个窗口,而这两个窗口连接的是不同的DB~
------解决方案--------------------
lz看看新开的窗口是不是连接的同一个DB~
------解决方案--------------------
function 可以执行这个吗? 换成procedure吧。
------解决方案--------------------
探讨
引用:

function 可以执行这个吗? 换成procedure吧。


请问创建function的语句和调用functin的语句是不是需要分开两步执行啊?

------解决方案--------------------
有可能是用户没有显式授权create table 的权限,好像有时候是会出现权限不足而无法创建表的情况的。
这时就需要要在Execute之前先grant create table to user;
------解决方案--------------------
o1,笑到我觉得为契机
  相关解决方案