zoukankan      html  css  js  c++  java
  • 存储函数和过程

    存储过程和函数
    存储过程: 对一个模块的封装
    函数: 功能几乎一样
    区别:
    函数必须通过return 关键字返回一个值
    存储过程:
    不需要return返回值

    参数:

    输入型参数
    输出型参数

    8.15

    DECLARE
    c student%ROWTYPE;
    CURSOR c_cursor IS SELECT * FROM student ;

    BEGIN
    OPEN c_cursor;
    LOOP
    FETCH c_cursor INTO c;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(c.sname);
    END LOOP;
    CLOSE c_cursor;
    END;

    DECLARE
    i NUMBER;
    a student.sname%TYPE;--引用类型
    b student%ROWTYPE;--记录类型
    BEGIN
    i:=107;
    *SELECT s.sname INTO a FROM student s WHERE s.sno=i;
    dbms_output.put_line('查询结果:'||a);*
    SELECT * INTO b FROM student s WHERE s.sno=i;
    dbms_output.put_line('查询结果:'||b.sbirthday);
    END;

    --25. 关于 OUT 型的参数: 因为函数只能有一个返回值, PL/SQL 程序可以通过 OUT 型的参数实现有多个返回值
    --要求: 定义一个函数: 获取给定部门的工资总和 和 该部门的员工总数(定义为 OUT 类型的参数).
    --要求: 部门号定义为参数, 工资总额定义为返回值.
    CREATE OR REPLACE FUNCTION sal_func1(p_id IN NUMBER,total_count OUT NUMBER)
    RETURN NUMBER
    AS
    sum_sal NUMBER(10);
    CURSOR sal_cursor IS SELECT sal FROM p_emp p WHERE p.deptno=p.id;
    BEGIN
    total_count:=0;
    FOR c IN sal_cursor LOOP
    sum_sal:=sum_sal+c.sal;
    total_count:=total_count+1;
    END LOOP;
    RETURN sum_sal;
    END;

    调用:

    SQL> set serveroutput on
    SQL> 
    SQL> declare
    2 -- Local variables here
    3 i integer;
    4 a NUMBER;
    5 begin
    6 a:= sal_func1(10,i);
    7 dbms_output.put_line(i);
    8 end;
    9 /

    存储函数:

    --22.2 返回一个"helloworld: atguigu"的字符串,其中atguigu 由执行函数时输入。

    CREATE OR REPLACE FUNCTION hello_world(v_logo varchar2)
    RETURN VARCHAR2
    AS

    BEGIN
    RETURN 'helloworld'||v_logo;
    END;
    --22.3 创建一个存储函数,返回当前的系统时间
    CREATE OR REPLACE FUNCTION sys_date
    RETURN DATE
    AS
    v_date varchar2(20);
    BEGIN
    v_date:=SYSDATE;
    SELECT SYSDATE INTO v_date FROM dual;
    dbms_output.put_line('aaaa');
    RETURN v_date;

    END;
    --23. 定义带参数的函数: 两个数相加
    CREATE OR REPLACE FUNCTION add_func(a NUMBER,b NUMBER)
    RETURN NUMBER
    AS
    c NUMBER;
    BEGIN
    c:=a+b;
    RETURN c;
    END;
    --24. 定义一个函数: 获取给定部门的工资总和, 要求:部门号定义为参数, 工资总额定义为返回值. 别名不能和关键字重名
    CREATE OR REPLACE FUNCTION sal_func(p_id NUMBER)
    RETURN NUMBER
    AS
    SUM_sal NUMBER(10);
    CURSOR sal_cursor IS SELECT sal FROM p_emp p WHERE p.deptno=p_id;
    BEGIN
    FOR c IN sal_cursor LOOP
    SUM_sal := SUM_sal + c.sal;
    END LOOP;
    RETURN SUM_sal;
    END;

    --25. 关于 OUT 型的参数: 因为函数只能有一个返回值, PL/SQL 程序可以通过 OUT 型的参数实现有多个返回值
    --要求: 定义一个函数: 获取给定部门的工资总和 和 该部门的员工总数(定义为 OUT 类型的参数).
    --要求: 部门号定义为参数, 工资总额定义为返回值.
    CREATE OR REPLACE FUNCTION sal_func1(p_id IN NUMBER,total_count OUT NUMBER)
    RETURN NUMBER
    AS
    sum_sal NUMBER(10);
    CURSOR sal_cursor IS SELECT sal FROM p_emp p WHERE p.deptno=p.id;
    BEGIN
    total_count:=0;
    FOR c IN sal_cursor LOOP
    sum_sal:=sum_sal+c.sal;
    total_count:=total_count+1;
    END LOOP;
    RETURN sum_sal;
    END;

  • 相关阅读:
    埃拉托色尼的素数查找法的优化问题
    Salesforce开发者学习笔记之三:Salesforce平台架构
    Salesforce开发者学习笔记之二:Salesforce开发平台应用场景
    Salesforce开发者学习笔记之一:基本知识
    Salesforce Apex 使用JSON数据的示例程序
    Salesforce Apex页面中调用远端网络服务
    Salesforce Apex 开发环境设置和Hello World示例
    四、Java 安装
    三、Windows 基础
    二、大数据生态圈尝鲜
  • 原文地址:https://www.cnblogs.com/NCL--/p/7368051.html
Copyright © 2011-2022 走看看