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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南[通俗易懂]

    16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南[通俗易懂]本文转载自InfoQ,作者李俊辰如果你的旧iPhone已经无法支持你日常使用了,你会怎么处理这部iPhone呢?卖掉还是留起来收藏呢?近日,国外一名16岁的小开发者在YouTube上发布了一则视频,展示了自己是如何将Linux移植到一部无法使用的iPhone7。2020年3月,Corellium提出了ProjectSandcastle,通过使用checkra1n越狱程序在iPhone上成功运行Android,激发了开发者对那些旧型号的iPhone.

    2022年9月25日
    2
  • App 抓包-Fiddler简单使用教程

    App 抓包-Fiddler简单使用教程App抓包-Fiddler简单使用教程环境说明Windows10家庭版小米10MUUI12.5.3稳定版FiddlerEverywhere2.1.1注意Fiddler在进行品牌升级后,推出了多款同类产品,虽然基础功能都相同,但各有偏重,在使用上也存在一些差异。比如博主早期使用过的Fiddler绿色版(对应现在的FiddlerClassic)在操作上和本博客介绍的FiddlerEverywhere几乎完全不同。目标使用Fiddle

    2022年5月7日
    77
  • python 网络编程

    python 网络编程

    2021年7月8日
    82
  • java jks 转pfx_JKS和PFX文件相互转换方法「建议收藏」

    java jks 转pfx_JKS和PFX文件相互转换方法「建议收藏」JKS(JavaKeysotre)格式和PFX(PKCS12)格式,是最常见的SSL证书格式文件,可以包含完整的证书密钥对,证书链和信任证书信息。PFX常用于WindowsIIS服务器,JKS常用语JAVA类的WEB服务器,如TOMCAT,WEBLOGIC,JBOSS,RESIGN,虽然近年来,这些服务器新的版本,都是可以同时支持PFX,JKS文件格式了,但是老的版本和免费版本,往往都只支持JK…

    2022年5月1日
    145
  • onStart和onResume的区别

    onStart和onResume的区别当Activity被onCreate后就会进入onStart状态,使这个Activity对用户来说呈可见状态,但不能交互。onStart之后调用onResume使得这个Activity获得焦点,排在了所有其他Activity之前,从而获得与用户交互的能力。

    2022年5月24日
    55
  • Windows Server 2016 NTP服务端和客户端配置[通俗易懂]

    Windows Server 2016 NTP服务端和客户端配置[通俗易懂]目标:A、B两台WindowsServer2016系统的服务器。B要做为NTP服务器使用,而只有A可以连到互联网。所以先将A作为NTP服务端,再将B作为既是服务端又是客户端。其它设备同B服务器同步时间。服务端:1.微软键+R键,进入“运行”,输入“regedit”,进入注册表2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe…

    2022年7月15日
    23

发表回复

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

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