【正文】
ELSE – statementtype:=39。 – 前觸發(fā)器、后觸發(fā)器。 這里 error_number是從- 20,000到- 20,999之間的數(shù),error_message是與此錯(cuò)誤相關(guān)的錯(cuò)誤正文。 – Begin – insert into students(id) values(null)。 – v_errortext varchar2(200)。 用戶定義的異常情態(tài)由 raise語(yǔ)句觸發(fā) 。 – 如:下面的語(yǔ)句引發(fā) invalid_number錯(cuò)誤 , 因?yàn)?‘ x’ 不是數(shù)值 。 1 – e_toomanystudents的作用域和本塊的其他變量相同 。ABCD39。 – 處理異常情態(tài) ? 異常部分的語(yǔ)法如下: – Exception – when exception_name then – 處理錯(cuò)誤語(yǔ)句序列 – when exception_name then – 處理錯(cuò)誤語(yǔ)句序列 – when others then – 處理錯(cuò)誤語(yǔ)句序列 – end。 sqlcode返回當(dāng)前的錯(cuò)誤號(hào) , sqlerrm返回當(dāng)前的錯(cuò)誤信息正文 。不能把空值插入到非空列 39。 – (p_studentid, – p_department,p_course)。2 )對(duì)于 U P D A T E 語(yǔ)句,將要被修改的行中各列的原來值包含在: o l d .c o l umn_ n a me列的新 值包含在: ne w .co l umn_ na me3 ) 對(duì)于 D EL ET E 語(yǔ)句,將要?jiǎng)h除的行的各列的值放在: o l d .co l umn_ n a meli16 觸發(fā)器 ? 關(guān)于觸發(fā)器中的 old和 new關(guān)鍵字: ? old表示數(shù)據(jù)操縱前的值, old只對(duì) UPDATE和DELETE操作。 DELETE TRIGGER! 1 row deleted. update emp set sal=sal+10 where deptno=10。15 觸發(fā)器 在 觸發(fā)器內(nèi),行級(jí)觸發(fā)器可以引用觸發(fā)器觸發(fā)時(shí)已存在行中各列的值。 – 12 – if v_currentstudents+1v_maxstudents then – raise_application_error(20230, – ‘ can’’ t add more students to’ || – p_department || ‘ ‘ ||p_course)。 – Begin – insert into students values(null)。 – end。 如果沒有異常處理部分 , 該異常處理部分將傳給包含該塊的塊 。 – Declare – v_tempvar varchar2(3)。 ? 用戶定義類型異常情態(tài) ,需要程序員自己定義代碼,對(duì)異常情況進(jìn)行處理。 2 – Storage_error和 program_error:是內(nèi)部的異常情態(tài) , 通常不會(huì)引發(fā)他們 。 – v_maxstudents number(3)。 6 – if v_currentstudentsv_maxstudents then – raise e_toomanystudents – End if。 –