plsql(3)--过程(procedure)和函数(function)

 

过程(procedure)和函数(function):

     过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。过程是作为一个独立执行语句调用的: 

创建过程的语法如下: 

CREATE[ OR REPLACE] PROCEDURE [schema.] procedure_name

   [arg1[in | out | in out] ........] 

{AS|IS} 

    declaration_section 

BEGIN 

    executable_section

 [ EXCEPTION 

   exception_section ] 

END [procedure_name] 

 

IN     表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。 

OUT    在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。

 IN OUT  这种模式是IN和OUT的组合;在过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数

eg:

 

CREATE OR REPLACE PROCEDURE pro_hello(

p_name  OUT s_emp.first_name%TYPE, 

p_id IN s_emp.id%TYPE := 1)

AS

  v_fname s_emp.first_name%TYPE;

BEGIN

  --p_id := 10;

 

  SELECT first_name

    INTO p_name

    FROM s_emp

   WHERE id = p_id;

 

  DBMS_OUTPUT.PUT_LINE('p_name: ' || p_name);

 

  --p_name := v_fname;

 

  --DBMS_OUTPUT.PUT_LINE('hello, ' || v_fname);

END;


 

 

 

 

函数:

CREATE [ OR REPLACE] FINCTION [schema.]function_name 

[parameter_list] 

RETURN returning_datatype

 {AS|IS} 

   declaration_section 

BEGIN 

   executable_section 

[ EXCEPTION] 

exception_section ] 

END [procedure_name] 

在执行部分函数必须有一个或多个return语句。 

 

在创建函数中可以调用单行函数和组函数,例如: 

CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)

 RETURN NUMBER 

IS 

pi NUMBER=ACOS(-1);

 RadiansPerDegree NUMBER; 

BEGIN 

 RadiansPerDegree=pi/180; 

RETURN(SIN(DegreesIn*RadiansPerDegree)); 

END 

eg:

 

 

CREATE OR REPLACE FUNCTION fun_getSalary(

p_id s_emp.id%TYPE,

p_mon NUMBER)

RETURN s_emp.salary%TYPE IS

  v_base s_emp.salary%TYPE;

  v_pct s_emp.commission_pct%TYPE;

  v_saleAmt s_ord.total%TYPE;

  v_sal s_emp.salary%TYPE;

BEGIN

  SELECT salary, commission_pct

    INTO v_base, v_pct

    FROM s_emp

   WHERE id = p_id;

 

  IF v_pct IS NULL THEN

    RETURN v_base;

  END IF;

 

  SELECT SUM(total)

    INTO v_saleAmt

    FROM s_ord

   WHERE sales_rep_id = p_id

     AND to_number(to_char(date_ordered,'mm')) = p_mon;

 

  IF v_saleAmt IS NULL THEN

    RETURN v_base;

  END IF;

 

  v_sal := v_base + v_saleAmt * (v_pct/100);

 

 

  RETURN v_sal;

END;

 


 

 

 

 

PLSQL Oracle存储过程(实例分析) 1、结构 .spc是包头文件 .bdy是包体文件 spc是bdy的声明 spc文件实例: 不带返回值的 PROCEDURE sp_gen_buylease_report ( i_operator IN pt.toper, i_address IN pt.taddress, i_func_no IN pt.t... 阅读详情

相关推荐

PLSQL编程指南与实践手册

PLSQL是Oracle数据库专用的程序化SQL语言,它在标准SQL的基础上增加了过程编程的特性。它允许开发者编写出结构化和功能强大的存储过程和函数。本章节将带领读者入门PLSQL的基础语法,为后续高级编程奠定坚实的基础。在第三章中,我们将深入探讨在 PLSQL 中如何创建和调用自定义的过程(PROCEDURE)和函数(FUNCTION)。过程和函数是 PLSQL 程序中封装逻辑的基本单位,它们能够帮助开发者组织代码,并提高代码的复用性。过程是一段代码的集合,它执行特定的任务。

weixin_42514750的博客 836

pl/sql之procedure and function

创建过程的语法: CREATE [OR REPLACE] PROCEDURE <procedure name> [(<parameter list>)] IS|AS <local variable declaration> BEGI

michael_linux的博客,一个小小小学生。滴水穿石,步步为营,只为那刹那芳华。 476

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 227

PL/SQL中简单的增删改procedure--创建环境

PL/SQL中简单的增删改procedure --创建环境Create Table sination(Fcode varchar(4) default '',Fdesc varchar(20) default ''); --添加数据Insert into sination(Fcode,Fdesc) Values('C001','汉族'); Insert into sination(Fc...

weixin_33910759的博客 204

宋浩线性代数笔记

Miao-A-SongHao-Linear-Algebra-Notes bilibili 宋浩老师 “惊叹号” 系列 《线性代数》网课 笔记及时间点目录 Github项目地址:https://github.com/cy69855522/Miao-A-SongHao-Linear-Algebra-Notes ???? 前言 我发现吧,线代没记笔记真不行。 浩浩学习,天天向上。数学网课推荐????宋浩老师的免...

Knife丶小刀博客 4万+

SCS 43. 利用Scissor算法从单细胞数据中挖掘临床表型关联的细胞亚群

本文详细介绍了Scissor算法在单细胞转录组数据分析中的应用,该算法能够精准挖掘与临床表型关联的细胞亚群。通过建立单细胞RNA测序数据与临床预测模型的直接关联,Scissor避免了传统聚类方法的局限性,为疾病机制研究和个性化医疗提供了新工具。文章还涵盖了数据预处理、模型选择、结果验证等实战技巧。

weixin_28736335的博客 490

plsql中的procedure和function编程

procedure:存储过程 eg: create or replace procedure p   --这儿是和plsql的区别         is         cursor c         is              select * from emp2 for  update;         --v_temp c%rowtype; begin

写自己的代码,让别人去看吧 4510

关于使用vcpkg下载osgearth遇到的问题

注意--x-manifest-root=后面跟着的E:\gitproject\osgearth-osgearth-3.5\vcpkg是你下载的源码解压缩后vcpkg.json的文件地址,然后等待编译完成。安装vcpkg后使用vcpkg install osgearth:x64-windows安装好osgearth并且导入项目使用时,发现无法运行官方文档中示例的main.cpp。这里写一种自己用过的使用vcpkg安装osgearth3.5的方法,源码,打开vcpkg所在的命令行,执行。示例main.cpp。

m0_61776040的博客 1523

plsql 过程化(procedure)sql

一.常见的访问oracle的技术   plsql  过程化(procedure)sql    存储过程   proc/proc++  使用c或者c++ 来访问oracle   odbc/ado     vc中访问数据库的技术   oci          oracle提供的底层接口   sqlj/jdbc    java 访问数据库的技术   二.plsql 的特点    结构化

枫叶冷风 2843

OpenMVS :用 colmap制作自己的数据集 重建(用colmap计算位姿,将位姿转为MVS需要的格式)

数据集制作主要是在windows进行,比较方便。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 3325

YOLO11涨点优化:原创自研 | 魔改Bottleneck,具备多尺度和特征通道融合的结构

可以将C3k2_MSAMCS放在neck,或者backbone和neck同时修改,具体看自己数据集的涨点情况决定

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1646

PL/SQL 测试 调用PROCEDURE 和FUNCTION

begin   -- Call the procedure  aw_wmsinmain(1,10765); end; DECLARE   V_number NUMBER;   v_char varchar(200);   v_date date ; begin   -- Call the function      

理性的浪漫的程序人生 1607

LeRobot 机器人学习(Robot Learning)教程(二)经典机器人学

本文探讨了机器人学中基于学习的方法与传统动力学方法的对比与发展趋势。文章指出,传统方法依赖精确的动力学模型和大量人工调参,面临跨任务泛化能力弱、工程复杂度高、物理建模局限性等问题。随着机器学习技术的进步和机器人数据集的丰富,基于学习的方法展现出三大优势:(1)能够实现跨任务与实体的泛化;(2)降低对人类专业知识的依赖;(3)利用历史数据优化性能。文中以平面机械臂为例,分析了传统逆运动学方法的计算复杂性和环境适应性挑战,并指出基于学习的方案在处理高维感知输入、复杂接触动力学等方面具有明显优势。文章认为,结合物

2506_90492529的博客 1066

plsql执行oracle函数,PLSQL中Function和Procedures的简单使用

FUNCTION(函数方法):作用:用于返回特定的数据(数据处理),关注点在于返回的结果。格式:CREATEORREPLACEFUNCTION函数名(参数 类型)RETURN类型IS名称类型BEGIN函数主体EXCEPTIONEND函数名;关键字:RETRUN : 定义函数返回的类型;IS :定义变量,可用于赋值;BEGIN :函数方法体,结束通过return()返回结果;EXCEPTION ...

weixin_42134769的博客 5850

学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模

本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构

xiaoheshang_123的博客 209

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

人大仓数据库KingbaseES PLSQL中的结果集处理-存储过程和函数

本文主要介绍了在KES中的如何使用存储过程和函数进行查询结果集的处理,对于存储过程,可以直接在过程内执行SELECT查询语句,并在存储过程的调用处返回查询的结果集。对于函数,可以通过设置返回的SETOF类型来指定函数的返回结果集类型,并使用 RETURN NEXT语句向函数返回结果集追加单行查询结果,或使用RETURN QUERY语句向函数返回结果集追加N行查询结果,最后使用无表达式的RETURN语句结束函数的执行。对于函数的结果集,使用SELECT语句来查询并返回函数的结果集。

arthemis_14的博客 3046

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

oracle之存储过程(procedure)与函数(function)

(一)存储过程(procedure)           对于PLSql程序的使用,如果每次使用都要进行编写,会非常的麻烦,这时可以采用过程和函数来命名PLSQL程序,被编译后存储到数据库中,以备后续使用。     过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回

qq30211478的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL的function和procedure

MySQL的function和procedure 1、function -- rand() 返回值 0<=v<1.0 -- CEIL(RAND()*N)的取值范围:1-N -- 插入百万数据 delimiter $$ -- 创建函数,mock_data() 函数名 create function mock_data() -- 确定返回值类型 returns int -- 在begin和end之间写sql语句 begin -- 声明一个变量的值为一百万 declare num int defaul

qq_38056518的博客 621

PL/SQL程序之存储过程和存储函数

存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 创建存储过程: 用CREATE PROCEDURE命令建立存储过程和存储函数。 语法: create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL子程序体; 注:存储过程一般用于高度安全的系统中 例一:为所有员工涨10%的工资 创建存储过程 create or repl

3883

oracle存储过程function,oracle之存储过程(procedure)与函数(function)

(一)存储过程(procedure)对于PLSql程序的使用,如果每次使用都要进行编写,会非常的麻烦,这时可以采用过程和函数来命名PLSQL程序,被编译后存储到数据库中,以备后续使用。过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。在编译存储...

weixin_33108105的博客 841

PLSQL_Study存储过程/函数

1, 在开发程序中,为了一个特定的业务功能,会向数据库进行多次连接关闭(连接和关闭是很耗费资源), 需要对数据库进行多次I/O读写,性能比较低。在数据库中实现基本上不会出现错误,在程序中操作可能会存在错误.(如果在数据库中操作数据,可以有一定的日志恢复等功能.)用于临时存储一个查询返回的多行数据(结果集,类似于Java的Jdbc连接返回的ResultSet集合),通过遍历游标,可以逐行访问处理该结果集的数据。之前我们编写的PLSQL程序可以进行表的操作,判断,循环逻辑处理的工作,但无法重复调用.

qq_43718377的博客 557

PLSQL调用JAVA存储过程实现修改系统日期及时间

PLSQL调用JAVA存储过程实现修改系统日期及时间 Author:张志远 mail:zzy93421@163.com 1.        以用户SCOTT登录,在PLSQL中执行如下脚本,即编译JAVA SOURCE: create or replace and compile java source named exesyscommand as import java.io.*; imp...

zzy93421的专栏 1324

Oracle—PLSQL函数

在 Oracle 数据库中,存储函数(Stored Function)是一种用户自定义的数据库对象,它们类似于程序中的函数或方法,可以接受参数并返回一个值。存储函数通常用于执行特定的计算、数据转换或其他操作,并且可以在 SQL 查询、PL/SQL 块以及其他存储过程或函数中使用。存储函数在创建后存储在数据库中,并且可以在需要时被调用。它们可以访问数据库中的数据,并且可以执行各种计算、查询和其他操作。存储函数还可以使用 SQL 和 PL/SQL 语言的所有功能,包括条件语句、循环、异常处理等。

麦当当的博客 1441

plsql developer查看function,procedure实现

ctrl+右键双击

qq_30832781的博客 9438

存储过程和函数

回到首页☞ 传统项目一直有一个争议,PLSQL到底是写到DB层,还是写到JAVA代码中实现。 目前大多数数据库操作都是写在mybatis等ORM框架实现的,为的是便于维护和迁移。 但是PLSQL编程还有没有意义, 当然有意义,尤其是做测试验证非常便捷。 回到首页☞ ...

JDIT的博客 683

Day60-Oracle04 - PLSQL编程、游标cursor、例外exception、存储过程(procedure)、存储函数(function)、java调用存储过程、触发器(trigger)

Day60-Oracle04 - PLSQL编程、游标cursor、例外exception、存储过程(procedure)、存储函数(function)、java调用存储过程、触发器(trigger)

jjizh的博客 835
上一篇: 转载:JAVA自学之路
下一篇: plsql--
afunti
博客等级 码龄17年 25粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值