① oracle中自定义的函数怎么编译
可在第三方软件中,如pl/sql中编译。
1、打开pl/sql软件并登录到指定数据库。
2、点击左上方像纸片的按钮,然后点击“sql窗口”
② plsql里面的编译无效对象是什么意思
Oracle中出现无效对象,就是因为在创建函数或存储过程等,里边的内容书写不正确导致。如果要重新编译,需要先修正错误,然后编译。
工具:Oracle 10g、PL/SQL
步骤:
1、在PL/SQL中打开出现编译错误的函数或存储过程,这里以存储过程为例。
2、右键点击该存储过程,选择“编辑”。
3、根据错误提示,找到错误,并修改错误。
4、改正错误后,点击左上方的“齿轮”状按钮。
5、运行成功后,则该存储过程就会变为编译成功的状态。
③ plsql触发器编译提示不存在,报红叉什么意思
报红叉就是编译没通过呗。
你找到你触发器的位置,一般是:左边triggers-然后找到你的触发器名称。然后右键-编辑,基本就能看到下边报什么错,一步一步改就行了啊。
④ 创建存储过程报错如下: 警告: 创建的过程带有编译错误。
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;
⑤ 如何重新编译PLSQL中的无效对象或者指定的对象
如何重新编译PLSQL中的无效对象或者指定的对象
打开那个对象(一般都是打叉的过程或者包体,点一下左上角的齿轮执行,编译通过的话,叉叉会消失)。有一个批量编译的(我看别人操作过,没看清界面在哪里,所以我只能手动逐个编译)