Oracle存储过程基本写法[通俗易懂]

Oracle存储过程基本写法[通俗易懂]oracle存储过程的基本语法1.基本结构 CREATEORREPLACEPROCEDURE存储过程名字(   参数1INNUMBER,   参数2INNUMBER)IS变量1INTEGER:=0;变量2DATE;BEGINEND存储过程名字2.SELECTINTOSTATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有…

大家好,又见面了,我是你们的朋友全栈君。

oracle 存储过程的基本语法

1.基本结构 
CREATE OR REPLACE PROCEDURE 存储过程名字
(
    参数1 IN NUMBER,
    参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT
  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
  例子: 
  BEGIN
  SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  …

3.IF 判断
  IF V_TEST=1 THEN
    BEGIN 
       do something
    END;
  END IF;

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

5.变量赋值
  V_TEST := 123;

6.用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;

7.带参数的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;

8.用pl/sql developer debug
  连接数据库后建立一个Test WINDOW
  在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

 

简单实例,通过DBMS_OUTPUT来看结果

CREATE OR REPLACE PROCEDURE bb (lic_para IN VARCHAR2,out_para OUT VARCHAR2)
AS
   temp   VARCHAR2 (100);
BEGIN
   SELECT lic_no
     INTO temp
     FROM t_vehicle_info
    WHERE lic_no = lic_para;
    out_para:=temp;
    DBMS_OUTPUT.put_line (out_para);
END bb;

下面是调用:

begin

  — Call the procedure

  bb(lic_para => :lic_para,

     out_para => :out_para);

end;

实例:

CREATE OR REPLACE PROCEDURE 要创建的存储过程名称 (
入参a IN VARCHAR2,
出参b out VARCHAR2

IS 变量c VARCHAR2 (2000) ; 
变量d NUMBER (10) ;
异常变量e EXCEPTION ;
BEGIN

IF 入参a IS NULL THEN
raise 异常e ;
END IF ;// 跳到异常处理 
FOR cc IN (select语句) LOOP // 执行sql 
v_sql := ‘select语句’ ; 
EXECUTE IMMEDIATE v_sql INTO v ;// 把查询的结果放到v中; 
// sql查询,并放到v2中 
SELECT
COUNT (*) INTO v2..; // 进行相关判断
IF v2 = 1 THEN
update、insert等操作 ;
END IF ;
END loop ; 
COMMIT ; 
MSG := ‘success’ ; 
// 异常处理
 EXCEPTION
WHEN NECE THEN
MSG := ‘入参a不能为空’ ;
WHEN OTHERS THEN
MSG := sqlerrm ;
 ROLLBACK ;
END 要创建的存储过程名称 ;

原文转载:https://www.cnblogs.com/chinafine/articles/1776085.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160888.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数组截取splice_splice返回值

    数组截取splice_splice返回值Javascript数组的splice方法介绍splice()方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。语法格式array.splice(start[,deleteCount[,item1[,item2[,…]]]])参数start必选指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于

    2022年9月25日
    3
  • c语言debug和release什么区别_电源模式有何差别

    c语言debug和release什么区别_电源模式有何差别.NET中Debug模式与Release模式差别

    2022年4月22日
    97
  • Struts2 漏洞信息汇总

    Struts2 漏洞信息汇总官方链接如下:https://cwiki.apache.org/confluence/display/WW/Security+Bulletins最近不出以外Struts2又又又一次被爆出RCE漏洞【S2-061Struts远程代码执行漏洞(CVE-2020-17530)】每次Struts2RCE漏洞爆发的时候都在想,如果有个地方能统一看一下Struts2的历史漏洞就好了,网上搜索了下居然没有,翻了下Struts2官网,终于找到了需要的内容截至本文发布时,所以已经爆出的Strut.

    2022年7月19日
    17
  • xray漏洞扫描器

    xray漏洞扫描器文章目录一、xray下载二、xray安装、使用一、xray下载xray是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:1、检测速度快。发包速度快;漏洞检测算法高效。2、支持范围广。大至OWASPTop10通用漏洞检测,小至各种CMS框架POC,均可以支持。3、代码质量高。编写代码的人员素质高,通过CodeReview、单元测试、集成测试等多层验证来提高代码可靠性。4、高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可

    2022年5月7日
    87
  • SQLyog安装_快影下载安装

    SQLyog安装_快影下载安装1、下载安装包SQLyog下载链接2、安装2.1、选择语言,默认即可2.2、下一步即可2.2、接受协议并下一步2.3、选择选项2.4、选定安装目录2.5、安装完成3、连接Mysql服务看到这个界面就连接成功了。…

    2022年9月2日
    5
  • 2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式

    2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式河南省高招办的资料如下,但是是pdf格式的:2018理科排名2018文科排名博主为了生计,整理了excel档的,如果有需要,向二维码支付2元,备注邮箱地址,第一时间发送给你。…

    2022年7月14日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号