在存储过程中创建临时表,表原先不存在,编译时倒数第二句会出错(找不到这张表),事先有这张表的话就不会了,怎么解决这个问题?
create or replace procedure DataSet_SingleRow
(RESULT_SET out SYS_REFCURSOR)
is
i number := 0;
begin
select count(1) into i from user_objects where object_name='TMP_PROC';
if (i > 0) then
execute immediate 'drop table tmp_proc';
else
execute immediate 'create global temporary table tmp_proc (dm number,mc number)';
execute immediate 'insert into tmp_proc values(1,1)';
end if;
open RESULT_SET for select * from tmp_proc;
end DataSet_SingleRow;
create or replace procedure DataSet_SingleRow
(RESULT_SET out SYS_REFCURSOR)
is
i number := 0;
begin
select count(1) into i from user_objects where object_name='TMP_PROC';
if (i > 0) then
execute immediate 'drop table tmp_proc';
else
execute immediate 'create global temporary table tmp_proc (dm number,mc number)';
execute immediate 'insert into tmp_proc values(1,1)';
end if;
open RESULT_SET for select * from tmp_proc;
end DataSet_SingleRow;
解决方案 »
- win7装Oracle 9i遇到jrew.exe已停止工作,用C#+Oracle开发人事管理信息系统
- 单元格计算过后汇总! (Excel or 润乾)
- 请教一个SQL效率的问题
- sql语句的优化问题
- 请教 游标关闭时是否会对在其间的insert和update做commit??谢谢
- 请问一个关于number类型的问题!!!很奇怪
- oracle 按月份建分区表
- 进来看看 这里有什么错?
- 请教关于oracle问题
- 在向一个表中更新和插入数据时,有几个字段的值可能为空也可能非空,于是在后台存储过程中我要分好几种情况处理,可否用一种方法来处理空
- 被一个弱弱的问题疯狂郁闷,求各位指点
- oracle中like与group问题
(
BANKID VARCHAR(20),
ISCITY VARCHAR(20)
)On Commit PRESERVE Rows';
SQL> show errors;
PROCEDURE DATASET_SINGLEROW 出现错误:LINE/COL ERROR
-------- -----------------------------------
18/22 PL/SQL: SQL Statement ignored
18/36 PL/SQL: ORA-00942: 表或视图不存在
仍然不行!!!
open RESULT_SET for 'select * from tmp_proc';
加上单引号编译就能成功通过.