当前位置:首页 » 编程软件 » oracle中如何显示编译错误

oracle中如何显示编译错误

发布时间: 2024-10-30 13:08:48

① oracle创建的触发器带有编译错误

告诉你两点:
1、当出现警告或者错误的时候,使用show error 命令,可以查看错误的具体信息,在信息中可以定位错误的具体位置。
2、你的问题是:【endif;】不能写在一起,【end if;】是正确的。
类似的还有【end loop】 等。

---
以上,希望对你有所帮助。

② oracle 编译包的时候,一直提示正在编译

编译的存储过程的时候,程序死住,等待一会出现ora-04021错误解决办法:

1.可能被锁住

查看v$lockedselect b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b

where a.SID = b.SID

得到死锁session的SID,SERIAL#参看这个是否为你自己用户下的,然后kill掉session

2.可能被挂起

查看v$session_waitselect b.serial#,a.* from v$session_wait a,v$session
bwhere a.sid = b.sid得到等待的session的sid和serial#3.查看dba_ddl_locksselect
session_id sid, owner, name, type,

mode_held held, mode_requested request

from dba_ddl_locks
where name = '&your_package_name'

③ oracle 警告创建的过程带有编译错误

1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLsql中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分

from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procere 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分

from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;

④ Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字

Oracle使用merge into 编写存储过程 遇编译错误,是设置错误造成的,解决方法如下:

1、首先新建存储过程,Create or ReplaceProcere CHK_SYS_EMP 检查系统工号。

⑤ Oracle SQL*PLUS中设置trigger为何总是编译错误

编译错误一般是trigger的写法有误。

Oracle中trigger语法:

CREATE[ORREPLACE]TRIGGERtrigger_name
{BEFORE|AFTER}
{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}
[OR{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}...]
ON[schema.]table_name|[schema.]view_name
[REFERENCING{OLD[AS]old|NEW[AS]new|PARENTasparent}]
[FOREACHROW]
[WHENcondition]
PL/SQL_BLOCK|CALLprocere_name;

具体的内容需要根据需求来编写。

⑥ 为什么oracle 新建存储过程时,出现“创建过程带有编译错误” ,求大神们帮助。因为没财富了,所以没悬赏了

先不说别的,就是insert into后必须要提交,否则插不进数据造成表被锁
再一个,你那俩参数ASSIGN_PK和CLASS_PK 是要输入的么?
输入的话要加上in,要不是输入,在后边取出的,至少也得赋值,这里就姑且当做你是要输入的两个参数吧。

create or replace procere add_t
(ASSIGN_PK IN VARCHAR2 ,
CLASS_PK IN VARCHAR2)
IS
BEGIN
INSERT INTO add_t values(''||ASSIGN_PK||'',''||CLASS_PK||'');
commit;
END;

热点内容
xp电脑开机密码怎么设置 发布:2024-10-30 15:25:57 浏览:784
压缩包文件乱码 发布:2024-10-30 15:19:05 浏览:847
电脑的密码怎么改密码怎么设置路由器设置 发布:2024-10-30 15:04:53 浏览:270
安卓手机充电电量倒退是什么原因 发布:2024-10-30 15:04:03 浏览:839
vb显示数据库数据 发布:2024-10-30 15:03:50 浏览:290
国外php 发布:2024-10-30 14:59:34 浏览:72
androidcheckbox位置 发布:2024-10-30 14:52:39 浏览:807
linux内核与linux系统 发布:2024-10-30 14:51:40 浏览:962
whilelooppython 发布:2024-10-30 14:47:12 浏览:260
安卓手机如何取消优化应用 发布:2024-10-30 14:23:34 浏览:319