基于oracle:存储过程和自定义函数例题

存储过程和函数的区别
1.返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有
2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用,函数一般情况下是用来计算并返回一个计算结果,存储过程一般是用来完成特定的数据操作 (比如修改、插入数据库表或执行某些DDL语句等等)
3.编译的区别:存储过程只需编译一次,调用的时候不需要再编译,函数每调用一次都需要重新编译

1.创建一个过程,能向dept表中添加一个新记录。(in参数)

CREATE OR REPLACE PROCEDURE sp_1(p_deptno dept.deptno%TYPE,
     p_dname dept.dname%TYPE,
     p_loc dept.loc%TYPE) IS
BEGIN     
INSERT INTO dept VALUES(p_deptno,p_dname,p_loc);   COMMIT;
END;
--调用
DECLARE 
v_deptno dept.deptno%TYPE:='&部门编号:';
v_dname dept.dname%TYPE:='&部门名称:';
v_loc  dept.loc%TYPE:='&部门位置:';BEGIN  sp_1(v_deptno,v_dname,v_loc);END;

2.从emp表中查询给定职工的职工姓名和工资。(提示:使用&来输入员工编号 要求:利用out模式的参数将值传给调用者)

CREATE OR REPLACE PROCEDURE sp_2(p_empno emp.empno%TYPE,
     p_ename OUT emp.ename%TYPE,
     p_sal OUT emp.sal%TYPE) IS
v_c NUMBER;
BEGIN     
SELECT COUNT(1) INTO v_c FROM emp WHERE empno=p_empno;   
IF v_c=0 THEN      dbms_output.put_line('没有这个员工编号!');    
else     
SELECT ename,sal INTO p_ename,p_sal FROM emp WHERE empno=p_empno;     dbms_output.put_line('员工姓名:'||RPAD(p_ename,10)||'员工工资:'||p_sal);   
END IF;
END;
--调用
DECLARE 
v_ename emp.ename%TYPE;
v_empno emp.empno%TYPE:='&员工编号:';
v_sal  emp.sal%TYPE;BEGIN  sp_2(v_empno,v_ename,v_sal);
END;

3.创建一个过程,在执行调用过程时,可随机输入emp表中某个雇员的姓名,根据雇员的姓名,返回该雇员的薪水值,并输出(out参数)

CREATE OR REPLACE PROCEDURE sp_3(p_ename emp.ename%TYPE,
     p_sal OUT emp.sal%TYPE) IS
v_c NUMBER;
BEGIN     
SELECT COUNT(1) INTO v_c FROM emp WHERE ename=p_ename;   
IF v_c=0 THEN    
dbms_output.put_line('没有这个雇员的姓名!');    
else        
SELECT sal INTO p_sal FROM emp WHERE ename=p_ename;       dbms_output.put_line('雇员的薪水:'||
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle 自定义函数是一种用户定义的函数,它可以使用 PL/SQL 或 SQL 语言编写,以满足特定需求。下面是 Oracle 自定义函数的详细介绍: 1. 函数语法 Oracle 自定义函数的语法如下: ```sql CREATE [OR REPLACE] FUNCTION function_name (parameter1 datatype1, parameter2 datatype2, …) RETURN return_datatype IS variable datatype; BEGIN -- 函数体 RETURN value; END; ``` 其中,OR REPLACE 是可选的,表示如果函数已经存在则替换它。function_name 是函数名称,参数列表包括参数名称和数据类型,RETURN 是函数返回值的数据类型,IS 开始函数体,variable 是函数中使用的变量,value 是函数的返回值。 2. 函数示例 下面是一个 Oracle 自定义函数的示例,用于计算两个数的和: ```sql CREATE OR REPLACE FUNCTION add_numbers ( n1 NUMBER, n2 NUMBER ) RETURN NUMBER IS sum NUMBER; BEGIN sum := n1 + n2; RETURN sum; END; ``` 该函数包括两个参数,分别为 n1 和 n2,返回值为 sum。 3. 调用函数 调用 Oracle 自定义函数的语法如下: ```sql SELECT function_name(parameter1, parameter2, …) FROM dual; ``` 其中,dual 是 Oracle 内置的一张虚拟表,用于测试和计算表达式。在调用函数时,需要传入函数所需的参数。 例如,要计算 2 和 3 的和,可以使用以下语句: ```sql SELECT add_numbers(2, 3) FROM dual; ``` 该语句将返回值 5。 4. 注意事项 在编写 Oracle 自定义函数时,需要注意以下几点: - 函数名称必须唯一。 - 函数参数和返回值必须指定数据类型。 - 函数体中可以包含 PL/SQL 或 SQL 语句。 - 函数中可以使用变量和控制结构。 - 函数必须以 RETURN 语句返回值。 - 函数在调用时需要传入参数。 - 函数可以在 SQL 语句中使用,也可以在 PL/SQL 块中使用。 - 函数的返回值可以是标量或表格。 总之,Oracle 自定义函数是一种非常有用的工具,可以帮助用户解决各种数据处理问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值