欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle怎么編譯無效,oracle無效sql語句

如何在Oracle中重編譯所有無效的存儲(chǔ)過程

:在SQL_PLUS中:spool ExecCompProc.sql select 'alter procedure ' ||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql;整理成一個(gè)存儲(chǔ)過程:Create Or Replace Procedure Zl_Compile_Invalid_Procedure AsStrsql Varchar2(200);BeginFor x In (Select Object_Name From All_Objects Where Status = 'INVALID' And Object_Type = 'PROCEDURE') LoopStrsql := 'Alter Procedure ' || 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;最后執(zhí)行:exec Zl_Compile_Invalid_Procedure;如果要看到無法重編譯的過程的出錯(cuò)信息,需要執(zhí)行前設(shè)置set serverout on。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沙河,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

oracle form 無法編譯,求助

個(gè)人觀點(diǎn):

1 last_ddl_time就是指最后一次編譯的時(shí)間。 你認(rèn)為的create or replace 其實(shí)就是一種編譯

2 A調(diào)用B引發(fā)的B的重新編譯。

我認(rèn)為A調(diào)用B是不會(huì)引起B(yǎng)的編譯的。從2個(gè)方面解釋:

1) 我個(gè)人工作經(jīng)驗(yàn)中沒有發(fā)現(xiàn)A調(diào)用B會(huì)讓B重新編譯。

案例:B中引用了一張表。我將表刪除了,編譯B。那么B出現(xiàn)了錯(cuò)誤。此時(shí)我又將表還原了。再去編譯A。注意:A中調(diào)用B。但是B是錯(cuò)誤的。如果調(diào)用B讓B也編譯的話,那么B會(huì)編譯通過,A沒問題。事實(shí)上:由于B的錯(cuò)誤,導(dǎo)致A編譯也錯(cuò)誤。可見B并沒有編譯。

2)存儲(chǔ)過程的一個(gè)優(yōu)點(diǎn)是什么?就是一次編譯,到處運(yùn)行。這個(gè)編譯時(shí)比較消耗資源的。從常理上講,如果每次調(diào)用A引發(fā)了B的編譯,那么存儲(chǔ)過程的上述的優(yōu)點(diǎn)浩然無存。所以從常理推斷,A調(diào)用B不會(huì)引發(fā)B的編譯。

---------------------------------- -----------------------------------------

早上看到了你昨晚發(fā)的信息。嘗試了下。你的結(jié)論是有一半是正確的。

正確的解釋應(yīng)該是:

1 假設(shè)A、B都是正確的 那么調(diào)用的時(shí)候無需編譯;

2 假設(shè)A、B是無效的。那么調(diào)用的時(shí)候會(huì)去編譯它。

Oracle會(huì)自己判斷A、B是否有效,再根據(jù)情況決定是否去編譯。

如何重編譯ORACLE數(shù)據(jù)庫的無效對(duì)象

如果無效對(duì)象的數(shù)量很少,那么你可以逐個(gè)編譯這些對(duì)象.

ALTER PACKAGE my_package COMPILE;

ALTER PACKAGE my_package COMPILE BODY;

ALTER PROCEDURE my_procedure COMPILE;

ALTER FUNCTION my_function COMPILE;

ALTER TRIGGER my_trigger COMPILE;

ALTER VIEW my_view COMPILE;

oracle 過程 重新編譯也無效

編譯完成,不代表里面語句沒問題,這種情況是存儲(chǔ)過程里存在某種錯(cuò)誤

在 SQL *Plus 或者 PL/SQL Developer 的 Command Windows 中,執(zhí)行

show errors procedure USP_EXCEPTION;

查看一下錯(cuò)誤是什么.

我的修改如下:

CREATE OR REPLACE PROCEDURE USP_EXCEPTION(EMPNO INTEGER, --批次ID

P_FM NUMBER, --分母

P_FZ NUMBER, --分子

P_RESULT OUT NUMBER --結(jié)果

) IS

V_RAISE EXCEPTION; --異常處理

type type_table_pcmx is varray(4) of varchar2(20);

TABLE_PCMX type_table_pcmx;

BEGIN

IF P_FZ = 0 THEN

RAISE V_RAISE;

END IF;

P_RESULT := P_FM / P_FZ;

SELECT ENAME, EMPNO, JOB, DEPTNO

INTO TABLE_PCMX(1),TABLE_PCMX(2),TABLE_PCMX(3),TABLE_PCMX(4)

FROM EMP

WHERE EMPNO = EMPNO;

EXCEPTION

WHEN V_RAISE THEN

RAISE_APPLICATION_ERROR(-20010, 'ERROR:分子為零!');

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20011, 'ERROR:批次明細(xì)不存在!');

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-20012, 'ERROR:數(shù)據(jù)錯(cuò)誤!');

END;

oracle程序包或函數(shù)處于無效狀態(tài)

1、你的存儲(chǔ)過程有錯(cuò)誤,編譯不通過。處理于無效狀態(tài)。2、問題 存儲(chǔ)過程中隱式游標(biāo)的select 語句必須要有into子句。 而 select * from temp_syckzl_zy 這是一個(gè)沒有意義的語句; 應(yīng)改為如:select col1 into v_col1 from temp_syckzl_zy; 注:col1為表中一字段,v_col1為一變量

當(dāng)前標(biāo)題:oracle怎么編譯無效,oracle無效sql語句
網(wǎng)站URL:http://chinadenli.net/article0/heddio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站云服務(wù)器App開發(fā)網(wǎng)站排名全網(wǎng)營銷推廣網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作