Orcale 存储过程

Oracle-存储过程 oracle中存储过程各种写法 阅读详情
1.oracle存储过程结构 
CREATE OR REPLACE PROCEDURE   oracle存储过程名字
(
    参数1 IN NUMBER,----参数是存储过程中的所需要传递的值,如java的中的方法参数
    参数2 IN NUMBER
) AS
变量1 INTEGER :=0;  ----变量赋值的方式:变量名 := 值; 
变量2 DATE;  --声明变量(变量名 变量类型) 
BEGIN
------ 存储过程的执行体 
END oracle存储过程名字
存储过程的基本写法如上,此与建表语句类似,存储过程中变量的声明,不声明变量,在下面使用时会出现编译错误。
2.无返回值的oracle存储过程
create or replace procedure 存储过程的名字 as
begin
  insert into xuesheng values (3, 'wangwu', 90, 90);---其中xuesheng是一个表的名字即数据库的插入语句
  commit;--提交事务
end 存储过程的名字;
3.有单个数据值返回的oracle存储过程
create or replace procedure xs_proc(temp_name in varchar2,
                                    temp_num  out number) is
  num_1 number;
  num_2 number;
begin
  select yu_wen, shu_xue
    into num_1, num_2
    from xuesheng
   where xing_ming = temp_name;
  --dbms_output.put_line(num_1 + num_2);
  temp_num := num_1 + num_2;
end;
output是在存储过程中的参数的返回值(输出参数),而ReturnValue是存储过程返回的值(使用return关键字),一个存储过程可以有任意多个依靠参数返回的值,但只有一个ReturnValue。

其中,以上两种与sql server基本类似,而对于返回数据集时,上述方法则不能满足我们的要求。在Oracle中,一般使用ref cursor来返回数据集。

4.有返回值的oracle存储过程(列表返回)
首先,建立我们自己的包。并定义包中的一个自定义ref cursor
create or replace package mypackage as
  type my_cursor is ref cursor;
end mypackage;
在定义了ref cursor后,可以书写我们的程序代码
create or replace procedure xs_proc_list(shuxue   in number,
                                         p_cursor out mypackage.my_cursor) is
begin
  open p_cursor for
    select * from xuesheng where shu_xue > shuxue;
end xs_proc_list;

5.SELECT INTO STATEMENT
  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
  记录,否则抛出异常(若没有记录则抛出NO_DATA_FOUND)
  例子: 
  BEGIN
  SELECT name,age into 变量1,变量2 FROM user where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  ...
6.IF 判断
  IF V_TEST=1 THEN
    BEGIN 
       do something
    END;
  END IF;
此事例有些简单,看以下比较容易明白

if 比较式 then begin end; end if; 
E.g 
create or replace procedure test(x in number) is 
begin 
if x >0 then 
begin 
x := 0 - x; 
end; 
end if; 
if x = 0 then 
begin 
x: = 1; 
end; 
end if; 
end test; ------if语句中需要注意的判断条件不用加()每个if语句结束之后需要加endif来结束否则将语法错误



 
7.WHILE 循环
  WHILE V_TEST=1 LOOP
  BEGIN
 XXXX
  END;
  END LOOP;


while 条件语句 LOOP 
begin 
end; 
end LOOP; 
E.g 
create or replace procedure test(i in number) as 
begin 
while i < 10 LOOP 
begin 
i:= i + 1; 
end; 
end LOOP; 
end test; 
 
8.变量赋值
  V_TEST := 123;
 
9.用FOR IN 使用cursor
  ...
  IS
  CURSOR cur IS SELECT * FROM xxx;
  BEGIN
 FOR cur_result in cur LOOP
  BEGIN
   V_SUM :=cur_result.列名1+cur_result.列名2
  END;
 END LOOP;
  END;


(1)循环遍历游标 
create or replace procedure test() as 
Cursor cursor is select name from student; name varchar(20); 
begin 
for name in cursor LOOP 
begin 
dbms_output.putline(name); 
end; 
end LOOP; 
end test; 
(2)循环遍历数组 
create or replace procedure test(varArray in myPackage.TestArray) as 
--(输入参数varArray 是自定义的数组类型,定义方式见标题6) 
i number; 
begin 
i := 1; --存储过程数组是起始位置是从1开始的,与java、C、C++等语言不同。因为在Oracle中本是没有数组的概念的,数组其实就是一张 
--表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历 
for i in 1..varArray.count LOOP 
dbms_output.putline(&apos;The No.&apos;|| i || &apos;record in varArray is:&apos;||varArray(i)); 
end LOOP; 
end test; 
 
10.带参数的CURSOR
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
  OPEN C_USER(变量值);
  LOOP
 FETCH C_USER INTO V_NAME;
 EXIT FETCH C_USER%NOTFOUND;
    do something
  END LOOP;
  CLOSE C_USER;
 
11.用pl/sql developer debug
  连接数据库后建立一个Test WINDOW
  在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试




Oracle之存储过程 所谓存储过程(),就是一组用于完成特定数据库功能的SQL,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。 阅读详情

相关推荐

orcale 存储过程详细教程以及pl/sql的语法

定义 描述表名%rowtype 记录型变量表名.列名%type 引用型变量:= 给变量赋予默认值into 把查询出来的数据进行赋值定义描述表名%rowtype记录型变量表名.列名%type引用型变量:=给变量赋予默认值into把查询出来的数据进行赋值当数据状态不对 或者 格式不对,可以手动抛出错误信息。raise_application_error(参数1,参数2):参数1为错误号码,取值范围:-20000到-20999 , 参数2为自定义的错误信息。

weixin_43360488的博客 1269

ORACLE存储过程

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

weixin_44740485的博客 4万+

Orcale的存储过程

1. 定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。 2. 无参存储过程 create or replace procedure NoParPro as //...

九师兄 2424

Oracle存储过程

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

猪之仆的博客 6541

Surface Go 2 变身 Linux 开发本:保姆级 Ubuntu 20.04 双系统安装与驱动配置全攻略

本文详细介绍了如何将 Surface Go 2 变身为高效的 Linux 开发本,涵盖 Ubuntu 20.04 双系统安装、专用内核配置、驱动优化等全流程。通过 linux-surface 内核安装和硬件驱动优化,确保 Surface Go 2 的触控、笔输入、摄像头等功能完美运行,适合开发者打造便携生产力工具。

weixin_30596165的博客 616

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4725

orcale-存储过程

非原创

weixin_45429019的博客 406

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

对orcale中的存储过程初步认识

最近在看存储过程,了解到了一些函数,在此记录下。 一、存储过程和存储函数 存储过程和存储函数:都是完成一个特定功能的子程序; 存储过程和存储函数的区别:是否需要return返回值。存储过程不能return返回值,存储函数可以返回return。除此之外,它两的作用一样。 二、创建存储过程 create or replace PROCEDURE 存储过程名称 (    ps_djxh   ...

loner_fang的博客 507

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1265

comsol-声学

COMSOL多物理场仿真软件以高效的计算性能和杰出的多场耦合分析能力实现了精确的数值仿真,已被广泛应用于各个领域的科学研究以及工程计算,为工程界和科学界解决了复杂的多物理场建模问题。COMSOL内嵌的声学模块可以方便地进行多孔声学和粘热声学的模拟仿真。软件数值计算得到的云图,可以将声压、速度、声强以及声能耗散等结果可视化,十分有利于学生对声学的学习和理解。将COMSOL仿真引入实验当中,通过软件的可视化处理有效直观的展示复杂物理场和集合模型仿真的流程,与实验数据结合,使得文章内容具有说服力、预见性和新颖性。

y2715163545的博客 2376

spring 调用ORCALE存储过程

 oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品            进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它自己            的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程            (我是说返回结果集的存储过程),我还没有什么方法能

susan631的专栏 855

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

ORcale 存储过程实例

1、建立一个存储过程用来接收一个员工号,返回他的工资和他所在部门的平均工资并作为传出参数传出。CREATE OR REPLACE PROCEDURE p_get_emp(i_empno emp.empno%TYPE,o_sal OUT emp.sal%TYPE,o_avg_a OUT emp.sal%TYPE)ASBEGIN        SELECT sal          INTO  o_s

小虫乱爬--爬爬也论技术 博客 2398

YOLOv11-seg 改进系列 | 引入原创 RSCD 重参数共享卷积分割头,增强 Head 表达力并压低计算量

本文提出一种改进的YOLOv11-seg分割头Segment_RSCD,通过重参数共享卷积增强表达能力。该模块在LSCD共享检测头基础上引入DiverseBranchBlock重参数卷积,保留三尺度预测与Proto掩码原型接口不变。相比原始Segment头,Segment_RSCD参数增加4%但计算量降低1.3%,在共享卷积结构中通过多分支补偿表达能力损失,同时利用Scale层保持尺度差异校准。该方法不改动Backbone/Neck结构,仅重构检测/分割头,实现训练期多路径聚合与部署期等效单分支的平衡。

qq_44224801的博客 181

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Orcale 存储过程和存储函数

存储过程,存储函数 数据库对象    存储在数据库中供所有用户调用的子程序叫做存储过程,存储函数--存储过程 打印helloworld /* 调用存储过程的方式 1.exec pro_say_helloworld(); 2begin pro_say_helloworld(); end; */ create proc...

theOne1207的博客 577

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Orcale 存储过程实践总结

由于项目中用到存储过程,这两天把存储过程方面的知识简单回顾了一下并分享给大家。 编写第一个存储过程 create or replace procedure ky_proc_in_out(para3 in out varchar2) as v_name varchar2(20); begin v_name := 'kangyi'; para3 := v_name; ...

weixin_30505751的博客 141

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

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

orcale 存储过程处理分页

/*                                         --------------------------分页--------------------------                      CREATE OR REPLAC

466

orcale存储过程简介

存储过程00、查看存储过程00、删除存储过程    drop procedure proc_name;00、重新编译存储过程    alert procdure proc_name compile00、给用户赋予执行权限    grant execute on proc_name to userName00、调用存储过程    方法1:execute 模式名.proc_name    方法2:  ...

溪中水 166

Jfinal调用Orcale存储过程

因为项目需要,最近一直在学习Orcale存储过程,但发现在网上很少有人写Jave中Jfinal调用Orcale存储过程的文章,即使有也是几年前的,很多都不能用,今天给大家分享一段Jfinal调用Orcale存储过程的代码,亲测有效。废话不多说直接上代码: public void runCountProc() { Object o = Db.execute(new ICall...

weixin_30367945的博客 130

Orcale存储过程基础知识

1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT    将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条

zOne_123的专栏 530

orcale存储过程批量插入表数据

      oracle的存储过程在语法上和sql server的有很大不同,下面是一个针对oracle的存储过程实例,该存储过程向数据库表插入大量数据,包括用户角色随机数生成。       数据库表(userInfo)DDL描述如下:CREATE TABLE USERINFO(  USERCODE  VARCHAR2(50 BYTE)                   NOT NU

qinysong的专栏 8475

Orcale存储过程完整例子

1.1 学生成绩计算基本信息 1.1.1 创建学生成绩表 现假设存在两张表,一张是学生成绩表(zgg_test_students) ,字段为: stdId,math,article,language,music,sport,total,average,step 创建表语句: create table ZGG_TEST_STUDENTS (   STDID    NUMBER(38

萧曳丶 1034

orcale存储过程与存储函数

存储函数: 存储过程与存储函数的区别

weixin_46649054的博客 96

orcale分页 存储过程分页

        参考了许多例子,总算写出了这个小功能:ORACLE 存储过程如下(里面有一些值得注意的地方,比如将 两个NUMBER值整除的结果用 TRUNC 函数截取,这是为了避免 溢出错误,还有就是 在查询结果集时的一些写法):-- 创建为分页的包CREATE OR REPLACE PACKAGE PAGPAGEAS  TYPE PAGE_CURSOR IS REF CURSOR; P

尽善,尽人事 1317
上一篇: Ext常用6大布局方式
java19901023
博客等级 码龄15年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值