1、在查詢語句中調(diào)用自定義函數(shù)?F_GETXM(FID),該函數(shù)通過編號獲取人員姓名,F(xiàn)ID?為編號
創(chuàng)新互聯(lián)專注于襄垣企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。襄垣網(wǎng)站建設(shè)公司,為襄垣等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
SELECT?F_GETXM(fID)?FROM?T_COURSE;
2、在存儲過程中調(diào)用:其中uID為學(xué)號,uName保存獲得的姓名
uName?:=?F_GETXM(uID);
3、在?INSERT?語句中調(diào)用
INSERT?INTO?T_CLASSMATE?(FID,FNAME,...)?VALUES?(uID,F_GETXM(uID),...);
4、在?UPDATE?語句中調(diào)用
UPDATE?T_CLASSMATE?SET?FNAME?=?F_GETXM('1700511')?WHERE?FID?=?'1700511';
5、在?WHERE?語句中調(diào)用
SELECT?*?FROM?T_CLASSMATE?WHERE?FNAME?=?F_GETXM('1700511');
注:T_CLASSMATE?學(xué)生表;T_COURSE?課程表。
在ORACLE中,函數(shù)的調(diào)用方式有位置表示法調(diào)用函數(shù)、命名表示法調(diào)用函數(shù)、混合使用位置表示法和命名表示法調(diào)用函數(shù)、排除表示法、ql調(diào)用表示法 --混合表示法。
甲骨文股份有限公司(Oracle)是全球大型數(shù)據(jù)庫軟件公司,總部位于美國加州紅木城的紅木岸。在2008年,甲骨文股份有限公司是繼Microsoft及IBM后,全球收入第三多的軟件公司。Oracle數(shù)據(jù)庫產(chǎn)品為財富排行榜上的前1000家公司所采用,許多大型網(wǎng)站也選用了Oracle系統(tǒng)。甲骨文股份有限公司于1989年正式進入中國,在北京、上海、廣州和成都均設(shè)立了分支機構(gòu)。
提示已經(jīng)講得清楚: 表TEST.TB_CLEARING發(fā)生了變化, 觸發(fā)器/函數(shù)不能讀它.
在使用oracle行級(for earch row設(shè)定)觸發(fā)器時要注意:
1.觸發(fā)器不可以執(zhí)行COMMIT、ROLLBACK或SAVEPOINT語句,而且不可以調(diào)用執(zhí)行這些語句之一的函數(shù)或過程。
2.觸發(fā)器不可以聲明long或LONG RAW變量。
3.觸發(fā)器不可以在定義它的表上執(zhí)行DML操作(行級觸發(fā)器)
你在該觸發(fā)器中要讀取觸發(fā)器器所在的表的數(shù)據(jù)(數(shù)據(jù)DML操作), 這是不允許的.
你將行級觸發(fā)改成表級觸發(fā), 即去掉for each fow試試. 反正在你的語句中也沒有使用到NEW, OLD這兩個行級觸發(fā)器新值, 舊值記錄.
外層管道函數(shù):
CREATE OR REPLACE FUNCTION F_CAGOODAVG_D_ZH_AQI (List varchar2,p_StartDate varchar2,p_EndDate varchar2,
p_cal number,p_MethodCode number,usercode varchar2)
RETURN TCA_GETSUBGOODAVG_D_AQI PIPELINED
...
end F_CAGOODAVG_D_ZH_AQI;
調(diào)用oracle存儲過程用begin...end的方式。
基本語法:
begin 存儲過程名(參數(shù)1,參數(shù)2……);--如果無參數(shù)則省略括號及括號內(nèi)部分end;
如,有存儲過程:
create or replace procedure p_testasv_begintime varchar2(20);v_endtime varchar2(20);v_str varchar2(10);begin v_begintime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'); select 'badkano' into v_str from dual; v_endtime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'); dbms_output.put_line('開始時間為:'||v_begintime); dbms_output.put_line('結(jié)束時間為:'||v_endtime);end;
執(zhí)行:begin p_test;end;