① 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中的無效對象或者指定的對象
打開那個對象(一般都是打叉的過程或者包體,點一下左上角的齒輪執行,編譯通過的話,叉叉會消失)。有一個批量編譯的(我看別人操作過,沒看清界面在哪裡,所以我只能手動逐個編譯)