15.PL_SQL——Function的创建和使用

================Example 1===============

[[email protected] notes]$ vim s81.sql

CREATE OR REPLACE FUNCTION check_sal RETURN Boolean

IS

v_dept_idemployees.department_id%TYPE;

v_empnoemployees.employee_id%TYPE;

v_sal   employees.salary%TYPE;

v_avg_salemployees.salary%TYPE;

BEGIN

v_empno:=205;

SELECT salary,department_id

INTO v_sal,v_dept_id

FROM employees

WHERE employee_id= v_empno;

SELECT avg(salary)

INTO v_avg_sal

FROM employees

WHEREdepartment_id=v_dept_id;

IF v_sal > v_avg_salTHEN

RETURN TRUE;

ELSE

RETURN FALSE;

END IF;

EXCEPTION

WHEN NO_DATA_FOUNDTHEN

RETURN NULL;

END;

/

[[email protected] notes]$ vim s81_1.sql

SET SERVEROUTPUT ON

BEGIN

IF (check_sal ISNULL) THEN

DBMS_OUTPUT.PUT_LINE(‘Thefunction returned NULL due to exception‘);

ELSIF(check_sal)THEN

DBMS_OUTPUT.PUT_LINE(‘Salary > average‘);

ELSE

DBMS_OUTPUT.PUT_LINE(‘Salary < average‘);

END IF;

END;

/

SQL> @notes/s81.sql

Function created.

SQL> @notes/s81_1.sql

Salary > average

PL/SQL procedure successfully completed

===========Example 2==============

[[email protected] notes]$ vim s82.sql

CREATE OR REPLACE FUNCTION tax(p_value IN NUMBER)

RETURN NUMBER IS

BEGIN

RETURN (p_value *0.08);

END tax;

/

SELECT employee_id, last_name, salary, tax(salary)

FROM employees

WHERE department_id = 100;

SQL> @notes/s82.sql

Function created.

EMPLOYEE_ID LAST_NAME                     SALARY TAX(SALARY)

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

108Greenberg                      12008      960.64

109Faviet                          9000         720

110 Chen                            8200         656

111Sciarra                         7700         616

112 Urman                           7800         624

113 Popp                            6900         552

6 rows selected.

================Example 3=====================

[[email protected] notes]$ vim s87.sql

CREATE OR REPLACE FUNCTION dml_call_sql(p_sal NUMBER)

RETURN NUMBER

IS

BEGIN

INSERT INTOemployees(employee_id, last_name, email, hire_date, job_id, salary)

VALUES(1,‘Frost‘, ‘[email protected]‘, SYSDATE, ‘SA_MAN‘, p_sal);

RETURN (p_sal+ 100 );

END;

/

UPDATE employees SET salary =dml_call_sql(2000)

WHERE employee_id= 170;

SQL> @notes/s87.sql

Function created.

UPDATEemployees SET salary = dml_call_sql(2000)

*

ERROR at line 1:

ORA-04091: table HR.EMPLOYEES is mutating, trigger/functionmay not see it

ORA-06512: at "HR.DML_CALL_SQL", line 5

[[email protected] notes]$ vim s87.sql

CREATE OR REPLACE FUNCTION dml_call_sql(p_sal NUMBER)

RETURN NUMBER

IS

BEGIN

RETURN (p_sal+ 100 );

END;

/

UPDATE employeesSET salary = dml_call_sql(2000)

WHERE employee_id = 170;

SQL> @notes/s87.sql

Function created.

1 row updated.

==================Example 4: Can’t searchthe same table===================

[[email protected] notes]$ vims88.sql

CREATE OR REPLACE FUNCTIONdml_call_sql(p_sal NUMBER)

RETURN NUMBER

IS

name employees.last_name%TYPE;

BEGIN

SELECT last_name

INTO name

FROM employees

WHERE employee_id = 170;

RETURN (p_sal + 100 );

END;

/

UPDATE employees SET salary =dml_call_sql(2000)

WHERE employee_id = 170;

SQL> @notes/s88.sql

Function created.

UPDATE employees SET salary =dml_call_sql(2000)

*

ERROR at line 1:

ORA-04091: table HR.EMPLOYEES ismutating, trigger/function may not see it

ORA-06512: at"HR.DML_CALL_SQL", line 9

==================Example 5 : Can searchanother table========================

[[email protected] notes]$ vims89.sql

CREATE OR REPLACE FUNCTIONdml_call_sql(p_sal NUMBER)

RETURN NUMBER

IS

id departments.department_id%TYPE;

BEGIN

SELECT department_id

INTO id

FROM departments

WHERE department_id = 270;

DBMS_OUTPUT.PUT_LINE(‘Department ID is:‘ || id);

RETURN (p_sal + 100 );

END;

/

UPDATE employees SET salary =dml_call_sql(2000)

WHERE employee_id = 170;

SQL> @notes/s89.sql

Function created.

Department ID is: 270

1 row updated.

==================Example 6=========================

[[email protected]]$ vim s90.sql

CREATE OR REPLACEFUNCTION f(

p_parameter_1 IN NUMBER DEFAULT 1,

p_parameter_5 IN NUMBER DEFAULT 5)

RETURN NUMBER

IS

v_var number;

BEGIN

v_var := p_parameter_1 + (p_parameter_5 *2);

RETURN v_var;

END f;

/

SELECTf(p_parameter_5 => 10) FROM DUAL;

SQL> @notes/s90.sql

Function created.

F(P_PARAMETER_5=>10)

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

21


时间: 2024-10-31 06:13:23

15.PL_SQL——Function的创建和使用的相关文章

使用 function 构造函数创建组件和使用 class 关键字创建组件

使用 function 构造函数创建组件: 如果想要把组件放到页面中,可以把构造函数的名称,当作 组件的名称,以 HTML标签形式引入页面中, 因为在React中,构造函数就是一个最基本的组件. 注意: 组件的首字母必须是大写 因为React在解析所有的标签的时候,是以标签的首字母来区分的,如果标签的首字母是小写,那么就按照 普通的 HTML 标签来解析,如果首字母是大写,则按照组件的形式去解析渲染. 格式: 创建: function Hello(props) { // 在组件中,如果想要使用外

IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 2.2项目部署 在工具栏点击 Project: 无需任何设置,选择默认编译目录(或自定义编译目录) Modules: 将Tomcat加入 Libraries:无需任何设置.这里描述了此项目的依赖. Facets: 无需任何设置.这里描述了此项目所适配的服务框架 Artifacts: 无需任何配置.

2016/1/15 面向对象练习 1,创建类 属性 方法 构造方法 2,自定义图书类 3温度单位转换工具

1 public class Factory { 2 3 //属性 4 //品牌 5 String pinpai; 6 //设备 7 int machine; 8 //材料 9 double material; 10 //资金 11 double money; 12 //人工 13 int rengong; 14 //产品 15 int goods; 16 17 void product(int xiaohao1){ 18 machine=xiaohao1; 19 System.out.prin

AngularJS开发指南15:AngularJS的创建服务,将服务注入到控制器,管理服务依赖详解

创建服务 虽然AngularJS提供了很多有用的服务,但是如果你要创建一个很棒的应用,你可能还是要写自己的服务.你可以通过在模块中注册一个服务工厂函数,或者通过Module#factory api或者直接通过模块配置函数中的$provide api来实现. 所有的服务都符合依赖注入的原则.它们用一个唯一的名字将自己注册进AngularJS的依赖注入系统(injector),并且声明需要提供给工厂函数的依赖.它们的依赖在测试中可以是虚拟的,这使得它们能很好地被测试. 注册服务 要注册服务,你首先要

spring项目篇15 --- 商城小项目创建订单以及查看所有订单

深圳肺炎患者突破80了,现在心里慌慌的,不知什么时候返深啊...既来之,则安之! 今天,这个简单的小项目最后一步,创建订单以及查看所有订单状态,我们的订单只需要点击一下付款即可完成支付,没有接入第三方支付.下面计划开始学习mybatis. 因为大多是业务代码,我们直接看就可以 先看dao层,在创建订单的时候,因为设计多表操作,因此需要开启事务 // IOrderDao package com.yang.dao; import com.yang.domain.Car; import com.yan

14.PL_SQL——StoreProcedures的创建和使用

================Example 1=================== SQL> select * from emp_tmp 2  ; EMPLOYEE_ID     SALARYCOMMISSION_PCT ----------- ---------- -------------- 301       2500              0 302         25             .1 [[email protected] notes]$ vim s72.sql

第15课:RDD创建内幕彻底解密

本节课主要内容: 1.RDD创建的几种方式 2.RDD创建实战 3.RDD内幕 RDD创建有很多种方式,以下几种创建RDD的方式:      1.使用程序中的集合创建RDD,实际意义用于测试用:      2.使用本地文件系统创建RDD,测试大量数据的文件:      3.使用HDFS创建RDD,最常用的方式:      4.基于DB创建RDD;      5.基于NoSQL创建RDD,例如HBase;      6.基于S3创建RDD;      7.基于数据源创建RDD; RDD实战: //

如何在开启了log-bin的MySQL Server中创建FUNCTION

在MySQL主从复制机器的master的数据库中创建function,报出如下错误: Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators va

以对象function本身函数不同的创建 car 的类型数据来重复或许做更换(开发)

创建Car的数据类型程序 // function car () { } // 创建的共享方法 car . prototype. shift = function () { alert ( this . color +" 汽车 " ) : } 选择格式在C++ 代码中比较常见,格式可类似更新下面如: //创建car 类型 function car () { if (car . prototype shift ) { // if 语句内只可以执行一次 car . prototype.shi