【Oracle数据库】存储过程

oracle使用存储过程进行跨数据库访问和操作并设置定时器 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言使用步骤1.建立database link连接2.编写存储过程(定时任务体)3.创建定时器总结关于定时器详解借鉴 前言 工作中需要使用oracle进行跨数据库的访问和表插入,因此记录一下具体的操作步骤 使用步骤 1.建立database link连接 create database link 连接名(步骤二用) connect to 要访问的数据库用户名 identified by 用户密码 usi 阅读详情

  • 语法
create [or replace<] procedure < procedure name> 

            
[(<parameter list>)]

      
is|as 

      
<localvariable declaration>

      
begin

           
<executable statements>

          
[exception  <exceptionhandlers>]

      
end;
  • 方法
             方法1exec +存储名      
                        注:这个是sqlpluse 中的调用方式

              方法2begin
                   存储名
              end;
  • IN 定义一个输入参数变量,用于传递参数给存储过程。

  • OUT 定义一个输出参数变量,用于从存储过程获取数据。

  • IN OUT 定义一个输入、输出参数变量,兼有以上2者的功能

  • DEFAULT 关键字为可选项,用来设定参数的默认值
    -例如:v_empno in number default 7777;

无参

  • 创建无参存储过程
CREATE or replace PROCEDURE proc6
as
BEGIN
  DBMS_OUTPUT.PUT_LINE('我是存储过程!!!!!');
  DBMS_OUTPUT.PUT_LINE('Hello Everyone!');
END;

create or replace PROCEDURE pro111
as
BEGIN
  dbms_output.put_line('存储过程!');
  dbms_output.put_line('hello world');
end;
  • 调用无参的存储过程
begin
proc6;
end;

drop procedure proc6

begin
  pro111;
end;

drop procedure pro111

输入参数

  • 创建带输入参数的存储过程
create or replace procedure proc2
(v_empno in emp.empno%type)  --存储过程名字后(入参名字 in 约束入参的数据类型,既可以用%type,也可以直接用number,char)
--多个入参:(入参一 in 数据类型,入参二 in 数据类型)
is

begin
      --根据员工编号,删除指定员工信息
      delete from emp where emp.empno=v_empno;
      
      --判断是否删除成功
      if (sql%notfound) then   
         --错误编号 -20000   ——————   -29999 之间
         --reise_application_error 内置的   指定错误的存储过程
         raise_application_error(-20008,'删除失败,员工不存在!');
      else
         dbms_output.put_line('删除成功');      
      end if ;         
end;

注:创建存储过程时,即使存储过程代码有误,也会被创建成功,
但是procedures文件夹下存储过程名字会有叉叉,可以打开sql窗口中的program windows-procedures窗口写存储过程

  • 调用带有输入参数的存储过程
begin
proc2(7788);
end;

begin
pro123(7788);
end;

select * from emp02;

输出参数

  • 创建带输出参数的存储过程
create or replace procedure proc3
(v_deptno in number,v_sal out number,v_cnt out number)

as

begin
   select avg(sal),count(*) into v_sal,v_cnt
          from emp where deptno=v_deptno;
exception
when no_data_found then
dbms_output.put_line('没有找到部门');          
when others then
dbms_output.put_line(SQLERRM);    
  
end;
  • 调用带有输出参数的存储过程
    注意,调用带有出参数据的存储过程要另外定义两个变量接收创建存储
    过程创建的出参,整体:创建存储过程时创建两个出参v_sal,v_cnt 接收emp表中查到的数据,调用proc3时,还要在定义两个变量v_avgsal,v_count来接收v_sal,v_cnt的数据
declare
       v_avgsal number;
       v_count number;
begin
       proc3(&a,v_avgsal,v_count);
       dbms_output.put_line(trunc(v_avgsal)||'====='||v_count);
end;
select * from user_procedures
declare
  e_avgsal number;
  e_count number;
begin
  pro111(&a,e_avgsal,e_count);
  dbms_output.put_line(trunc(e_avgsal)||'====='||e_count);
end;

输入输出参数

  • 创建输入输出参数的存储过程
create or replace procedure proc4
(v_num1 in out number,v_num2 in out number)
is 
        v_temp number:= 0;        
begin
        v_temp := v_num1;
        v_num1 := v_num2;
        v_num2 := v_temp;
end;
  • 调用输入输入参数的存储过程
declare
       v_n1 number:=1;
       v_n2 number:=4;
begin
       proc4(v_n1,v_n2);
       dbms_output.put_line(v_n1||'======'||v_n2);
end;

删除存储过程

  • 语法:drop procedures + 存储过程名
  • 存放存储过程的表为:user_source

存储过程时如何实现批量插入数据

create table emp_copy as select * from emp
select * from emp_copy for update
drop table emp_copy
  • 创建存储过程 背下
create or replace procedure ab
is 
begin
  /*循环*/
  for i in 1..100 loop
  /*操作*/
  insert into emp02 values (
  /*empno的值*/
  i+100,
  /*ename*/
  dbms_random.string('a',5),
  /*job*/
  'CLERK',
  /*mgr*/
  i,
  /*hiredate*/
  trunc(sysdate)-i,
  /*sal*/
  101+i,
  /*comm*/
  202,
  /*deptno*/
  21);
  end loop;
end;
  • 执行
begin
  ab;
end;
select * from emp02
ORACLE 存储过程 使用DBLINK 连接远程数据库 <br />由于项目需要,需在存储过程中连接远程数据库完成数据的抽取工作。做个记录^^<br /> <br />在此文件下<br />G:/oracle_test/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora<br />添加:<br />link =<br />  (DESCRIPTION=<br />   (ADDRESS_LIST=<br />    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP)(PORT = 1521 阅读详情

相关推荐

Oracle 数据库存储过程:从入门到精通

本文针对初学者oracle数据库存储过程的作用和使用方法进行了解

qq_40574354的博客 2122

Oracle学习之存储过程

存储过程 即是将具有某种特定功能的SQL语句集,存储在数据库中,一次编译后续直接使用不在编译。用户通过存储过程的名字并给出参数来调用存储过程

ssauuuuuu的博客 4886

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

oracle execute 结果,oracle – 显示动态EXECUTE输出pl / sql从sqlplus

您将需要从SELECT中检索结果以显示它.您将使用synthax EXECUTE IMMEDIATE sql_query INTO var1,var2 .. varn.但是在你的情况下,编译时列的数量是未知的.有很多方法可以处理这个:>您可以使用DBMS_sql并循环输出的列.>您可以使用可读格式(如CSV的CSV)构建具有所有结果的列我会演示1:sql> DEFINE sche...

weixin_36209848的博客 508

Oracle存储过程

使用普通变量定义方式,需要知道表中列的类型,而使用引用类型,不需要考虑列的类型,使用%TYPE是非常好的编程风格,因为引用型变量更加灵活。

猪之仆的博客 6529

ORACLE存储过程

目录一、存储过程的创建二、存储过程语法说明1.存储过程的基本结构2.变量的声明和赋值三、流程控制语句四、循环控制语句 本文是基于oracle编写的存储过程,以下所说的存储过程均为oracle中的存储过程,以及下面所说的存过都是存储过程的简称 一、存储过程的创建 创建存储过程的方式两种,一种是基于PLSQL创建,一种是ORACLE语法创建 PLSQL创建步骤: 1.连接plsql 2、找到左边对象下的procedures,点击右键 3、点击新建进入到创建存过页面 4、填写存储过程名称以及输入参数和输出

weixin_44740485的博客 4万+

Oracle数据库 - 存储过程

Oracle数据库存储过程

前后端分离,人不分离! 2607

oracle 存储过程 db,oracle数据库存储过程是什么?

oracle数据库存储过程:一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据...

weixin_33923059的博客 240

oracle 存储过程 db,Oracle数据库创建存储过程的示例详解

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。优点:允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。减少网络流量,例如一个需要数百行的SQL代...

weixin_39888412的博客 192

【DB】Oracle存储过程

存储过程(Store Procedure)是一种在数据库中预先编译并存储的SQL代码合集,可以包含SQL语句和控制结构(如条件语句、循环等),用于完成一个或一系列数据库操作(比如对查询订单然后对订单进行修改)。存储过程可以接受输入参数、返回输出参数,并且可以返回结果集。它们通常用于执行复杂的数据操作和业务逻辑。在Oracle PL/SQL中,游标(Cursor)是用于逐行处理查询结果集的机制。游标允许你遍历查询结果集中的每一行,并对每一行执行特定的操作。以下是游标的基本语法和示例。使用BEGIN。

m0_64210833的博客 2089

Oracle DBMS_STATS.GATHER_DATABASE_STATS 存储过程

Oracle 数据库中用于收集整个数据库统计信息的关键存储过程,这些统计信息对于优化器生成高效执行计划至关重要。

文牧之的博客 929

Oracle数据库和SQLServer数据库中创建DB-Link语法

1.Oracle数据库中DB-Link对象创建语法: create public database link DB_Link_Name connect to userName identified by password using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.

七步诗 2025

oracle 存储过程 db,13-oracle_数据库存储过程和包的开发

一:存储过程(图片左边的procedure目录):在数据库的实际开发过程中,我们不可能每个脚本用人工的方式执行,需要自动的批量提交脚本到数据库执行,数据库就提供了像存储过程这样的对象,方便开发人员把处理某个功能或报表的逻辑写到存储过程里。1)存储过程的优点:a.执行速度更快:在数据库中保存的存储过程语句都是编译过的b.允许模块化程序设计和可移植性更强:类似方法的复用(使用存储过程可以实现存储过程设...

weixin_42395498的博客 177

Oracle存储过程迁移梧桐云原生分析型数据库的注意事项

随着国产化趋势越演越烈,某某公司需要一个能够快速处理大数据量的国产化数据仓库,能够代替现有的Oracle数据库,进而保证大数据量存储行业持续稳定发展。

easilyyy的博客 277

ado mysql 存储过程_如何使用ADO访问Oracle数据库存储过程

来源:网络/责编:编程入门 作者:不详 window.google_render_ad();一、关于ADO在基于Client/Server结构的数据库环境中,通过OLE DB接口可以存取数据,但它定义的是低层COM接口,不仅不易使用,而且不能被VB,VBA,VBScript等高级编程工具访问。而使用ADO则可以很容易地使VB等编程语言直接访问数据(通过OLE DB接口)。ADO是基于...

weixin_28898707的博客 156

13Oracle Database 存储过程

Oracle Database 存储过程 触发器相当于java中的事件监听,当某事件发生时激活特定的事件并执行相应的逻辑 DML触发器中包含了三种事件 insert update delete 语法格式 create [or replace] trigger 触发器名 {before| after | instead of} {insert|delete|update} on 表名...

weixin_30273763的博客 105

ORACLE数据库存储过程

ORACLE数据库存储过程 存储过程概念:PL/SQL是将一个个PLSQL的业务处理过程存储起来进行服用,这些被存储起来的PLSQL程序被称之为存储过程存储过程作用:在开发程序中,为了一个特定的业务功能,会向数据库进行多次连接关闭(连接和关闭是很消耗资源的)需要对数据库进行多次的I/O读写,性能比较低,如果把这些业务放到PLSQL中,在应用程序中只需要调用PLSQL就可以做到连接关闭一次数...

qq_41737501的博客 924

kettle 连接oracle 使用【调用DB存储过程】找不到数据库中的存储过程

KETTLE 无法找到ORACLE 中创建的 存储过程。 这样子可以解决。是由于存储过程必须 一个传入参数,否则KETTLE会看不到见。 改写一下存储过程即可。 改写前 CREATE OR REPLACE PROCEDURE CREATE_ALI_RECSYSDATA is 改写后。 CREATE OR REPLACE PROCEDURE CREATE_ALI_RECSYSDATA (startpoint in number) is 2021/03/15 14:04:...

育哥的博客 2614

Oracle数据库存储过程

1、定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过 编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数 来调用并执行它,从而完成一个或一系列的数据库操作。 2、存储过程的创建 Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。 (1)无参存储过程语法 ...

清平调、其N 的博客 441

27、视网膜血管识别与分类的数据集和验证过程

本文介绍了视网膜血管自动识别与分类方法所使用的数据集及其验证过程。通过30张高分辨率的近红外反射视网膜图像,结合专业医生的手动标注结果,构建了包含597个血管段的基准数据集。研究采用准确率、召回率、F1分数和混淆矩阵等评估指标对模型进行验证,并提出了特征增强和分类器优化策略以提升性能。实验结果显示,该方法在复杂区域具有较强的鲁棒性和较高的准确性,为临床应用提供了可靠的依据。

i7j8k9l的博客 133

基于Pytorch实现的EcapaTdnn声纹识别大模型(spectrogram)

基于Pytorch实现的EcapaTdnn声纹识别大模型(spectrogram),这个模型使用的声谱图(spectrogram)注意是legacy2分支,源码地址是:https://github.com/yeyupiaoling/VoiceprintRecognition-PaddlePaddle/tree/legacy2

上一篇: 【Oracle数据库】游标(未完)
下一篇: 【Oracle数据库】存储函数
Lemon_Can
博客等级 码龄5年 6粉丝 38原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值