无法编译存储过程
A. pl/sql 中建个一个存储过程,编译不过去,问题在哪
create table abc,这个表abc,什么都没有指定,至少要指定ABC表的一个字段,还有字段的类型。
另外,这个存储过程只能执行一次,因为执行一次之后,abc表被创建了,再执行的时候,就会创建重复的名字了。所以在执行之前,你最好先判断库中有没有abc表,如果有,先执行drop table abc。再创建。
B. 如何在Oracle中重编译所有无效的存储过程
:在SQL_PLUS中:spool ExecCompProc.sql select 'alter procere ' ||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql;整理成一个存储过程:Create Or Replace Procere Zl_Compile_Invalid_Procere AsStrsql Varchar2(200);BeginFor x In (Select Object_Name From All_Objects Where Status = 'INVALID' And Object_Type = 'PROCEDURE') LoopStrsql := 'Alter Procere ' || x.Object_Name || ' Compile';Begin Execute Immediate Strsql; Exception--When Others Then Null; When OTHERS Then dbms_output.put_line(Sqlerrm); End;End Loop;End;最后执行:exec Zl_Compile_Invalid_Procere;如果要看到无法重编译的过程的出错信息,需要执行前设置set serverout on。
C. 数据库存储过程编译出错
可用第三方工具检查错误。
如以下存储过程:
D. 存储过程编译出错表或视图(与存储过程在同一用户下)不存在,急等!!!
首先,
存储过程
在a,你得把用的b用户的表给a用户查询权限,然后在过程里面用b的表是在表名前面加个b用户名在点一下,后面就可以用b的表了
E. oracle存储过程编译不通过,求各位大虾帮我看下
FOR i IN 1...1000 LOOP 语法错误 是两个点!
,INSERT ID,NAME,age,email,sex,birthday,create_time INTO person VALUES(
这一段的insert 这个一行也是有错误
--1-birthday DATE 与birthdaty:=DATE'1992-05-01'; 不是同一个变量
--以下是更过后的,可以参考下 希望对你有帮助1
create or replace procere insert_person(
NUM IN INT
)
AS
ID INT;
NAME VARCHAR2(10);
age NUMBER;
email VARCHAR2(10);
sex NUMBER;
birthday DATE;
create_time TIMESTAMP;
BEGIN
ID:=NUM;
NAME:='张三';
age:=25;
email:='shangsan';
birthday:=to_date('1992-05-01','yyyy-mm-dd');
create_time:=SYSTIMESTAMP;
FOR i IN 1..1000 LOOP
sex:=1;
IF(i<500)THEN
sex:=0;
END IF;
INSERT INTO person( ID,NAME,age,email,sex,birthday,create_time) VALUES(
NUM+i,
NAME||i,
age,
email||i||'@163.com',
sex,
birthday,
create_time
);
END LOOP;
COMMIT;
dbms_output.put_line('执行结束');
END;
F. Oracle 定义存储过程 不能执行,处于无效状态。
无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。
还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。
你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
G. oracle 存储过程无法编译,删除,一旦执行该操作PLSQL就会出现未响应
存在无效对象,用plsql菜单中的工具先“编译无效对象”
H. plsql编译存储过程卡死
1、查看一下Oracle数据库中的正在运行的进程是否正在运行该程序,如果有的话把进程停止
2、全部关闭重开或者换一个PLSQL试一下,看看是不是PLSQL本身导致的问题
3、如果都不好用先尝试重启一下PLSQL所在的服务器(如果可以重启的话)
先试试上述方法
I. ORACLE 存储过程被锁,编译不了,怎么解锁
可用SYS登录,然后查询如下语句:
查找存储过程OPERATIONDATA_IMP被哪些session锁住而无法编译
select * FROM dba_ddl_locks where name =upper('OPERATIONDATA_IMP');
从而得到session_id,然后通过
select t.sid,t.serial# from v$session t
where t.sid=&session_id;
得到sid和serial#
最后用alter system kill session 'sid,serial#'; kill 相关session即可。
J. ORACLE 存储过程无法编译,编译就卡死
你怎么查的锁?v$locked_object?dba_ddl_locks查了没,可能是ddl的锁,如果不能编译,一编译就死,也可能是ddl的锁导致的,以前碰到过。如果能找到锁,那就简单了。
不过还碰到过一种特别扯淡的情况,关掉自己的连接,然后换一台电脑从新来过,就OK了,这种情况也碰到过。