Oracle开发子程序和包

ESP32IDF 通过 PCA9685控制舵机的程序bug处理 esp32 PCA9685 bug 舵机 阅读详情

----------------------------------------------创建存储过程(无返回值)----------------------------------------------------

/*
    语法:
    create or replace procedure 过程名称(变量名1(in 入参,out出参,inout 出入参) 数据类型,变量名2 数据类型)
    is/as
*/

--1.创建一个无参过程,输出7499的部门编号

create or replace procedure getdeptno1  --or replace可以不加,不加不能修改,加上or replace 可以
is --is或as都可以
 v_deptno emp.deptno%type;
 begin
   select deptno into v_deptno from emp where empno=7499;
   dbms_output.put_line(v_deptno);
 end;


--调用
  --1.
  begin
  getdeptno1;
  end;
  --2
  call getdeptno1();
  --3 getdeptno1 test测试
  --4
  exec getdeptno1;--只能用户黑窗口

--2.创建一个入参的过程 根据输入的员工编号输出员工的部门编号 (接收参数)
create or replace procedure getdeptno2(v_empno in number)
is
v_deptno emp.deptno%type;
begin
  select deptno into v_deptno from emp where empno=v_empno;
  dbms_output.put_line(v_deptno);
end;

--调用
--1.
begin
  getdeptno2(7499);
end;

--2.
declare
  v_empno emp.empno%type:=&e;
begin
  getdeptno2(v_empno);
end;


--3.创建一个带有出参的过程 根据输入的员工的编号 返回员工部门编号 
create or replace procedure getdeptno3(v_empno in number,v_deptno out number)
is
begin
  select deptno into v_deptno from emp where empno=v_empno;
end;

--调用
declare
  v_empno number(10):=&e;
  v_deptno1 number(10);
begin
  getdeptno3(v_empno,v_deptno1);
  dbms_output.put_line(v_deptno1);
end;

--4 创建一个出入参的过程 根据输入的员工的编号 返回员工部门编号
create or replace procedure getdeptno4(v_param in out number)
is
begin
  select deptno into v_param from emp where empno=v_param;
end;

--调用
declare
  v_param number(10):=&e;
begin
  getdeptno4(v_param);
  dbms_output.put_line(v_param);
end;


--参数的传递方式

--新增一个部门
create or replace procedure insertdept(v_deptno number,v_dname varchar2,v_loc varchar2)
is
begin
  insert into dept values(v_deptno,v_dname,v_loc);
end;


select *from dept
--1.按位置传参
declare
  pt number(10):=44;
  namee varchar2(100):='l';
  locc varchar2(100):='dd';
begin
  insertdept(pt,namee,locc);
end;

--2.按名字传参
declare
  pt number(10):=44;
  namee varchar2(100):='l';
  locc varchar2(100):='d';
begin
  insertdept(v_deptno=>pt,v_dname=>namee,v_loc=>locc);
end;
--3.混合
declare
  pt number(10):=44;
  namee varchar2(100):='l';
  locc varchar2(100):='d';
begin
  insertdept(pt,v_dname=>namee,v_loc=>locc);
end;


-----------------------------------------------函数(有返回值)-------------------------------------------------------------

/*
   create or replace function 函数名(参数【in/out】数据类型,。。。)
   return 返回值类型
   is/as
   声明变量/声明常量
*/

--创建一个无参有返回值的函数  获取一个随机数并求整
create or replace function getRound return number
is
  v_no number(10);
begin
  v_no:=ceil(dbms_random.value()*100);
  return v_no;
end;


--调用
--1.
select getround from dual

--2.在代码块中调用
declare
  v_return number(10);
begin
  v_return:=getround();
  dbms_output.put_line(v_return);
end;

--带入参有返回值的函数  通过输入员工编号获得员工所在的部门名称
create or replace function fun_deptno(v_empno number)return varchar2
is
  v_dname dept.dname%type;
begin
  select dname into v_dname from emp,dept where emp.deptno=dept.deptno and empno=v_empno;
  return v_dname;
end;

--调用
select fun_deptno(empno) from emp

declare
  v_dname varchar2(200);
  v_empno number(10):=&e;
begin
  v_dname:=fun_deptno(v_empno);
  dbms_output.put_line(v_dname);
end;

--入参出参还带返回值的函数 通过输入员工编号获得员工所在的部门名称和部门地址
create or replace function fun_deptno2(v_empno number,v_loc out varchar2)return varchar2
is
  v_dname dept.dname%type;
begin
  select dname,loc into v_dname,v_loc from emp,dept where emp.deptno=dept.deptno and
  empno=v_empno;
  return v_dname;
end;

--调用
declare
  v_dname varchar2(200);
  v_empno number(10):=&e;
  v_loc varchar(200);
begin
  v_dname:=fun_deptno2(v_empno,v_loc);
  dbms_output.put_line(v_dname);
  dbms_output.put_line(v_loc);
end;


------------------------------------------------包---------------------------------------------------------------

--创建包

 --语法
  /* 
     create or replace package 包名
     is/as
     
     声明的内容
     
     end 包名;
  */
--创建包和包体


-- 调整部门30的员工工资为最高  写一个存储过程调整薪资,写一个函数获取最高工资
--首先创建包规范
create or replace package changeSal
is
  --这是一个共有变量 
  v_deptno number(10):=30;
  --共有的存储过程
  procedure proc_changeSal(v_max number);
  --共有的函数
  function func_getMax return number;
end changeSal;

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

--创建一个包头
create or replace package pag_dept
as
function fun_query_dept return varchar2;
procedure pro_query_dept;
procedure pro_insert_dept(v_deptno dept.deptno%type,v_dname dept.dname%type,v_loc dept.loc%type);
end pag_dept;

--创建包体
create or replace package body pag_dept
as
--过程
procedure pro_query_dept
  is t_dname1 dept.dname%type;
  begin
    select dname into t_dname1 from dept where deptno=10;
    dbms_output.put_line('部门名称'||t_dname1);
    exception
      when no_data_found then
       dbms_output.put_line('没有找到数据');
end;
       
       --添加部门过程
       procedure pro_insert_dept(v_deptno dept.deptno%type,v_dname dept.dname%type,v_loc dept.loc%type)
       is
       begin
         insert into dept values(v_deptno,v_dname,v_loc);
         end;
         --函数
         function fun_query_dept
           return varchar2
           as
           t_dname dept.dname%type;
           begin
             select dname into t_dname from dept where deptno=10;
             return t_dname;
             end;
             end pag_dept;
             
             --包的调用
             declare
             v_dname dept.dname%type;
             begin
               v_dname:=pag_dept.fun_query_dept;--调用函数
               dbms_output.put_line('通过函数查询出来的部门名称:'||v_dname);
               pag_dept.pro_insert_dept(5,'cc','bbb');
             end; 
               
从入门到精通:激光器恒流驱动电路的设计与选型指南 本文深入解析了激光器恒流驱动电路的设计与选型。文章从基础电路原理讲起,对比了简易恒流源与高精度运放反馈方案的优劣,并重点阐述了如何为不同功率与精度要求的激光器项目选择合适的恒流驱动方案,强调了恒流源对于保障激光器稳定工作、防止热失控及延长寿命的核心作用。 阅读详情

相关推荐

ESP32搭配FT6236触摸屏:从芯片手册到完整I2C驱动代码的保姆级解析

本文详细解析了ESP32搭配FT6236触摸屏的I2C驱动开发过程,从芯片手册解读到完整代码实现。通过硬件架构分析、寄存器配置、I2C通信封装及触摸数据处理等步骤,提供了一套完整的驱动解决方案,帮助开发者快速掌握ESP32与触摸屏的交互技术。

weixin_29174385的博客 291

Oracle子程序和程序包

子程序(方法) 概念:命名的 PL/SQL 块,编译并存储在数据库中。 子程序的各个部分: 声明部分 可执行部分 异常处理部分(可选) 子程序的分类: 过程 - 执行某些操作(无返回值得方法) 函数 - 执行操作并返回值(有返回值的方法) 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 过程(无返回值的方法) 创建过程的方法: --创建一个存储过程,根据员工编号查询员

qq_44333590的博客 313

HDMI设计6--Video PHY Controller IP

Reference:https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/vid_phy_controller/v2_2/pg230-vid-phy-controller.pdf 1. 序 Video PHY Controller IP是为实现与视频(DisplayPort和HDMI™技术)MAC传输或接收子系统的即插即用连接而设计的。视频MAC层和PHY层的接口是标准化的,能...

Archar_Saber的博客 8338

Oracle中子程序和程序包中的过程

Oracle中的过程       Oracle中,子程序是已经命名的PL/SQL块,他们预编译后存储在数据库中,可以随时从任何数据库客户端和应用程序中调用它们。命名的PL/SQL程序包括过程和函数。程序可以通过过程名和函数名对他们进行调用,相当于Java中的方法,过程相当于就是没有返回值的方法。函数相当于有返回值的方法,过程和函数都可以有自身的参数,在调用时为其传值。下面的例子就是简述了如何使用过

adelyspace的专栏 817

CCC数字钥匙3.0标准解读(22)

介绍设备制造商服务器和车辆制造商服务器之间的通信协议.

weixin_41738640的博客 1748

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7667

源码-Oracle数据库管理-第十三章-子程序和包-Part 3(子程序参数)

这部分内容将的比较细。 --13.2 子程序参数 --13.2.1 形式参数与实际参数 --代码13.6 形式参数示例 CREATE OR REPLACE PROCEDURE adjust_salary(p_empno NUMBER, p_salary REAL) AS BEGIN --在函数体内部使用形式参数 UPDATE emp SET sal = p_salary WHE

预见未来to50的专栏 837

vue3 - vite报错TypeError: crypto.hash is not a function(vue3+vite启动运行提示错误,项目无法启动且打包报错失败,详细解决排查方案教程)

vue3 vite 报错,vue3+vite启动报错:TypeError: crypto.hash is not a function,创建vue3+vite项目时报错TypeError: crypto.hash is not a function,如何解决这个问题,VUE3+VITE报错crypto.hash,vue3运行报错,vite运行报错,vue3打包报错,vite打包报错,vue3新建项目无法运行,vue3 vite创建项目直接报错了,node版本不兼容,修改了node版本还是不行,依旧报错,一直

✅ 精选推荐文章 1万+

Oracle数据库学习笔记 (六 —— 开发子程序和包)

开发子程序和包基本内容一、什么是子程序?二、过程2.1 开发过程开发过程?2.2 创建过程:无参数创建执行2.4 创建过程:带有 IN 参数小测试:2.5 创建过程:带有 out 参数调用带有 out 的参数2.6 创建过程:带有IN OUT 参数2.7 过程多参传递2.7.1 按位置传递2.7.2 按名称传参2.7.3 组合传递三、函数3.1 创建函数3.2 创建带输出的函数3.3.3 过程 与...

欢迎来到Gorit的博客 1015

Python爬虫实战 | 拼多多商品评论采集与深度分析

本文从 API 调用、网页渲染到情感分析与关键词提取,全流程剖析了“拼多多商品评论采集与分析”项目。Scrapy + API 可快速抓取评论;Playwright 可突破 API 限制,抓取完整页面内容;数据清洗 + 分析揭示用户真实反馈;可持续部署、扩展至更多商品 & 时间段;

2201_76125261的博客 1696

基于特征模仿的YOLOv5中间层知识蒸馏:原理、实现与实验全解析

目标检测中的模型轻量化是一个关键挑战。本文提出一种基于特征模仿(Feature Imitation)的YOLOv5中间层知识蒸馏方法,通过让学生模型学习教师模型的中间层特征表示,显著提升轻量级检测器的性能。我们将详细阐述蒸馏损失函数的设计、特征对齐策略、训练流程,并提供完整可运行的代码实现。同时,推荐多个适合蒸馏训练的数据集,并通过实验验证方法的有效性。

YOLO 185

Oracle中的子程序和包

在Oracle中通过使用子程序和包将PL/SQL代码封装起来,从而实现模块化,在以后的调用中可以多次复用,而不受前台语言的限制,同时通过用子程序和包将PL/SQL代码封装起来,有利于提高开发效率和执行效率,但是维护性却没有面向对象灵活,如果一个子程序受到影响,就需要修改该子程序的定义。 在Oracle中子程序分为过程和函数,过程适用的场合是处理需要修改数据的业务,如有inser...

XinhuaShuDiao的博客 266

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

oracle子程序与命名块,Oracle 开发子程序和包

Oracle 开发子程序和包基本内容过程函数程序包基本要求:掌握过程的创建于使用账务函数的创建于使用掌握包的创建与使用一、什么是子程序?答:子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用PL/SQL有两种类型的子程序:过程和函数*过程用于执行特定的操作,而函数用于返回特定数据二、过程2.1 开发过程开发过程过程一般用于执行一个指定的操作,可以将常用的特定操作封装成过...

weixin_29138345的博客 273

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

oracle中子程序包括什么,Oracle 11g基础学习---(5) 开发子程序和包

学习Oracle从哪里入手呢,在这里,我将带你走进Oracle的大门,一天一章,7天入门不是梦1. 开发子程序子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用PL/SQL有两种类型的子程序:过程和函数过程用于执行特定操作,而函数则用于返回特定数据通过将商业逻辑和企业规则集成到PL/SQL子程序中,可以简化客户端应用的开发和维护,提高应用的性能1. 1 开发过程1.1...

weixin_42522750的博客 239

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Oracle 《数据库 2 天开发人员指南》第5章:开发存储子程序和包

示例 5-13 处理预定义异常 NO_DATA_FOUNDBEGINSELECT *END LOOP;EXCEPTION您可以声明和处理用户定义的异常。示例 5-14 以粗体显示如何更改 EMP_EVAL.CALCULATE_SCORE 函数以声明和处理两个用户定义的异常,wrong_weight 和 wrong_score。进行此更改并编译更改后的函数。(有关如何更改包主体的示例,请参阅“教程:在子程序中声明变量和常量”。BEGINBEGIN。

In-Memory Computing Technology 804

子程序oracle,Oracle学习开发PLSQL子程序和包

可以用exec或者call调用存储过程定义变量时要用var,如:var username varchar2(20);在调用变量时必须在变量名的前面加上双引号,如:exec :username := 'user1';在调用存储过程时也要在变量名的前面加上双引号,如exec compute(:n1,:n2);可以使用show error输出当前错误查看存储过程的源代码:Sql代码selecttextf...

weixin_32565397的博客 117

Oracle11g基础学习---------(5) 开发子程序和包

学习Oracle从哪里入手呢,在这里,我将带你走进Oracle的大门,一天一章,7天入门不是梦  1. 开发子程序 子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用 PL/SQL有两种类型的子程序:过程和函数 过程用于执行特定操作,而函数则用于返回特定数据 通过将商业逻辑和企业规则集成到PL/SQL子程序中,可以简化客户端应用的开发和维护,提高应用的性能

幸福的猪的专栏 1294

oracle_开发子程序和包

  包(package)用于组合逻辑相关的PL/sql类型的(例如:table 类型和record类型),pl/sql 项(列如:游标,和游标变量)和pl/sql子程序(例如:过程和函数) 通过使用pl/sql包不仅可以简化应用设计,提高应用 的性能,还可以实现信息的隐藏,子程序重载等功能。 下面就针对计算圆的面积来做个演示: 1—创建包规范 create or replace pac...

weixin_30920091的博客 145

Oracle学习开发PLSQL子程序和包

可以用exec或者call调用存储过程 定义变量时要用var,如:var username varchar2(20); 在调用变量时必须在变量名的前面加上双引号,如:exec :username := 'user1'; 在调用存储过程时也要在变量名的前面加上双引号,如exec compute(:n1,:n2); 可以使用show error输出当前错误 查...

weixin_33847182的博客 125

Oracle学习笔记(7) 开发PLSQL子程序和包

哈哈,清明节放假回去了一下,真是太好了,回家的感觉真好啊!现在又开始出差之旅了,又好久没有来了,今天继续Oracle的学习! 这是第七章的学习笔记,学习完第六章的动态SQL之后,开始要学习子程序和包的使用了……,希望大家能多给俺一些支持啊! 编程时使用的工具是PLSQL Developer 7.1.4 在CMD下执行PL/SQL: 可以用exec或者cal...

vipbooks的专栏 383

Oracle数据库之开发PL/SQL子程序和包

PL/SQL块分为匿名块与命名块,命名块又包含子程序、包和触发器。 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑、企业规则写成过程或函数保存到数据库中,以便共享。 过程和函数均存储在数据库中,并通过参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据。 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了...

weixin_34293911的博客 168

Oracle学习交流(4) -----开发子程序和包

--创建存储过程create or replace procedure proc_firstasbegin   dbms_output.put_line('hello world!');end;beginproc_first;end;drop procedure proc_fir

PanderPeople的专栏 486
上一篇: PL/SQL语言
下一篇: Oracle游标和触发器
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值