1、在查询语句中调用自定义函数 F_GETXM(FID),该函数通过编号获取人员姓名,FID 为编号
创新互联专注于襄垣企业网站建设,成都响应式网站建设,商城网站建设。襄垣网站建设公司,为襄垣等地区提供建站服务。全流程按需制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
SELECT F_GETXM(fID) FROM T_COURSE;
2、在存储过程中调用:其中uID为学号,uName保存获得的姓名
uName := F_GETXM(uID);
3、在 INSERT 语句中调用
INSERT INTO T_CLASSMATE (FID,FNAME,...) VALUES (uID,F_GETXM(uID),...);
4、在 UPDATE 语句中调用
UPDATE T_CLASSMATE SET FNAME = F_GETXM('1700511') WHERE FID = '1700511';
5、在 WHERE 语句中调用
SELECT * FROM T_CLASSMATE WHERE FNAME = F_GETXM('1700511');
注:T_CLASSMATE 学生表;T_COURSE 课程表。
在ORACLE中,函数的调用方式有位置表示法调用函数、命名表示法调用函数、混合使用位置表示法和命名表示法调用函数、排除表示法、ql调用表示法 --混合表示法。
甲骨文股份有限公司(Oracle)是全球大型数据库软件公司,总部位于美国加州红木城的红木岸。在2008年,甲骨文股份有限公司是继Microsoft及IBM后,全球收入第三多的软件公司。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。甲骨文股份有限公司于1989年正式进入中国,在北京、上海、广州和成都均设立了分支机构。
提示已经讲得清楚: 表TEST.TB_CLEARING发生了变化, 触发器/函数不能读它.
在使用oracle行级(for earch row设定)触发器时要注意:
1.触发器不可以执行COMMIT、ROLLBACK或SAVEPOINT语句,而且不可以调用执行这些语句之一的函数或过程。
2.触发器不可以声明long或LONG RAW变量。
3.触发器不可以在定义它的表上执行DML操作(行级触发器)
你在该触发器中要读取触发器器所在的表的数据(数据DML操作), 这是不允许的.
你将行级触发改成表级触发, 即去掉for each fow试试. 反正在你的语句中也没有使用到NEW, OLD这两个行级触发器新值, 旧值记录.
外层管道函数:
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;
调用oracle存储过程用begin...end的方式。
基本语法:
begin 存储过程名(参数1,参数2……);--如果无参数则省略括号及括号内部分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('结束时间为:'||v_endtime);end;
执行:begin p_test;end;