PLSQL——存储过程、函数

本文介绍了Oracle数据库中的PL/SQL子程序,包括存储过程和函数的概念及区别。存储过程是一组PL/SQL代码块,用于执行特定业务功能,而函数则必须返回数据。文章详细阐述了创建、调用、删除存储过程的方法,以及参数的IN、OUT、IN OUT模式。此外,还讨论了函数的创建语法和返回值使用方式。
摘要由CSDN通过智能技术生成

1.概述

ORACLE 提供 可以把PL/SQL
程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。存储过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。

过程和函数的唯一区别是:
函数总向调用者返回数据,而过程则不返回数据。

2.存储过程

存储过程,就是一段存储在数据库中执行某块业务功能的程序模块。它是由一段或者多段的PL/SQL代码块或者SQL语句组成的一系列代码块。

创建存储过程的语法
create [or replace] procedure 存储过程名[(参数 in|out|in out 参数数据类型,…)]
is|as
声名部分;
begin
plsql代码块;
exception
异常处理;
end;

如:

--无参数存储过程
create or replace procedure p1
is 
begin
   for v in (select * from emp) loop
      dbms_output.put_line(v.ename||','||v.job||','||v.sal||','||v.deptno);
   end loop;
end;

select * from user_objects where object_type='PROCEDURE';

存储过程的调用
过程名字();

  1. 在plsql块中调用
  2. call 名字();
  3. execute命令调用(sqlplus中输出)
    Sqlplus :
    set serverout on;
    Begin
    过程名();
    end;

删除存储过程
drop procedure p1;

参数的三种模式
IN 用于接受调用程序的值。默认的参数模式
OUT 用于向调用程序返回值
IN OUT 用于接受调用程序的值,并向调用程序返回更新的值

--写一个存储过程,根据传入部门编号,查询该部门下的所有员工,并打印员工信息
create or 
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PL/SQL是Oracle数据库中的一种编程语言,用于编写存储过程函数、触发器等数据库对象。下面是PL/SQL查询存储过程的介绍: PL/SQL查询存储过程是一种在数据库中定义的可重复使用的代码块,用于执行查询操作。它可以接受输入参数,并返回结果集。查询存储过程通常用于封装复杂的查询逻辑,提高代码的可维护性和重用性。 在PL/SQL中,可以使用以下步骤来创建和执行查询存储过程: 1. 创建存储过程:使用CREATE PROCEDURE语句创建存储过程,并指定输入参数和返回结果集的类型。例如: CREATE PROCEDURE get_employee_details (p_employee_id IN NUMBER, p_result OUT SYS_REFCURSOR) IS BEGIN OPEN p_result FOR SELECT * FROM employees WHERE employee_id = p_employee_id; END; 上述示例创建了一个名为get_employee_details的存储过程,接受一个输入参数p_employee_id和一个输出参数p_result,通过查询语句返回符合条件的员工信息。 2. 执行存储过程:使用EXECUTE或CALL语句执行存储过程,并传递参数。例如: DECLARE v_employee_id NUMBER := 100; v_result SYS_REFCURSOR; BEGIN get_employee_details(v_employee_id, v_result); -- 处理结果集 END; 上述示例中,声明了一个变量v_employee_id并赋值为100,声明了一个变量v_result用于接收存储过程的结果集。然后调用get_employee_details存储过程,并传递参数。 3. 处理结果集:在存储过程执行后,可以通过游标(CURSOR)来处理返回的结果集。例如: LOOP FETCH v_result INTO v_employee; EXIT WHEN v_result%NOTFOUND; -- 处理每一条记录 END LOOP; 上述示例中,使用FETCH语句从结果集中获取每一条记录,并在循环中进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值