求救,紧急求教个Oracle 问题

meichuankuzi 2010-08-20 06:31:58
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表不存在,而单独运行时没问题,觉得很奇怪,哪位懂的给解决一下,十分感谢
...全文
133 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2010-08-23
  • 打赏
  • 举报
回复
额,第一次发现.
fuyou001 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 phoenix_99 的回复:]
SQL code

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 IMMEDIA……
[/Quote]
学习了...
herohuaxu 2010-08-23
  • 打赏
  • 举报
回复
来晚了
cwjArcInfo 2010-08-23
  • 打赏
  • 举报
回复
路过,学习
duanzhi1984 2010-08-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wkc168 的回复:]
引用楼主 meichuankuzi 的回复:
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……
[/Quote]
楼上应该可以满足楼主的
心中的彩虹 2010-08-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 meichuankuzi 的回复:]
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表不存在,而单独运行时……
[/Quote]


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






cnwz 2010-08-20
  • 打赏
  • 举报
回复
同意2楼

用动态SQL建的表,存储过程在编译的时候直接用INSERT INTO通不过,所以只能也用动态SQL
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nerobest 的回复:]

执行建表语句后没有提交,说以插入语句找不到表
[/Quote]

oracle中ddl是自动提交的。
NeroBest 2010-08-20
  • 打赏
  • 举报
回复
执行建表语句后没有提交,说以插入语句找不到表
Phoenix_99 2010-08-20
  • 打赏
  • 举报
回复

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插入
iqlife 2010-08-20
  • 打赏
  • 举报
回复
报什么错误,贴出来看看

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧