第2讲 PLQL程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* INSTEAD OF 示例 创建一个包括员工及其所在部门信息的视图empdept,然后向视图中插入一条记录(2345,’TOM’,3000,’SALES’)。 创建视图 CREATE OR REPLACE VIEW empdept AS SELECT empno,ename,sal,dname FROM emp,dept WHERE emp.deptno=dept.deptno WITH CHECK OPTION; 创建触发器 * CREATE OR REPLACE TRIGGER trig_view INSTEAD OF INSERT ON empdept FOR EACH ROW DECLARE v_deptno dept.deptno%type; BEGIN SELECT deptno INTO v_deptno FROM dept WHERE dname=:new.dname; INSERT INTO emp(empno,ename,sal,deptno) VALUES(:new.empno,:new.ename,v_deptno,:new.sal); END trig_view; * 15.8.4系统触发器 触发器事件 创建系统触发器 * 系统触发器事件 系统触发器事件 DDL事件 CREATE、ALTER、DROP) 数据库事件触发 服务器启动/关闭、用户登陆/注销以及服务器错误 * 调用软件包pkg_emp中的过程update_sal,修改7844员工工资为3000。调用add_employee添加一个员工号为1357,工资为4000的员工。 BEGIN pkg_emp.update_sal(7844,3000); pkg_emp.add_employee(1357,4000); END; * 包的重载 重载子程序必须同,即名称相同,参数不同。 如果两个子程序参数只是名称和模式不同,则不能重载。 PROCEDURE overloadme(parameter1 IN NUMBER); PROCEDURE overloadme(parameter2 OUT NUMBER); 不能根据两个函数返回类型不同对它们进行重载。 FUNCTION overloadme RETURN DATE; FUNCTION overloadme RETURN NUMBER; 重载子程序参数必须在类型系列方面有所不同。 PROCEDURE overloadchar(parameter IN CHAR); PROCEDURE overloadchar(parameter IN VARCHAR2); * 在一个包中重载两个过程,分别以部门号和部门名称为参数,查询相应部门员工名、员工号信息。 * CREATE OR REPLACE PACKAGE pkg_overload AS PROCEDURE show_emp(p_deptno NUMBER); PROCEDURE show_emp(p_dname VARCHAR2); END pkg_overload; CREATE OR REPLACE PACKAGE BODY pkg_overload AS PROCEDURE show_emp(p_deptno NUMBER) AS BEGIN FOR v_emp IN (SELECT * FROM emp WHERE deptno=p_deptno) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.empno|| || v_emp.ename); END LOOP; END show_emp; * PROCEDURE show_emp(p_dname VARCHAR2) AS v_deptno NUMBER; BEGIN SELECT deptno INTO v_deptno FROM dept WHERE dname=p_dname; FOR v_emp IN (SELECT * FROM emp WHERE deptno=v_deptno) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.empno|| || v_emp.ename); END LOOP; END show_emp; END pkg_overload; * 15.7.4包

文档评论(0)

wtw4044 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档