zoukankan      html  css  js  c++  java
  • oracle存储过程的基本语法

    1、存储过程的语法结构:

    CREATE OR REPLACE PROCEDURE 过程名 AS

        声明语句段;

    BEGIN

        执行语句段;

    EXCEPTION

        异常处理语句段;

    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;

               

    创建存储过程实例

    CREATE OR REPLACE PROCEDURE stu_proc as
    --声明语句段
    v_name varchar2(20);
    BEGIN
    --执行语句段
    SELECT o.sname INTO v_name FROM student o WHERE o.id=1;
    DBMS_OUTPUT.put_line(v_name);
    EXCEPTION
    --异常处理语句段
    WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line('NO_DATA_FOUND');
    END;

    --调用存储过程
    --
    CALL stu_proc();


     

  • 相关阅读:
    一文搞懂 ThreadLocal 原理
    听说用 Lombok 可以早点下班?
    原来 CPU 为程序性能优化做了这么多
    如何优雅地中止线程?
    线程数,射多少更舒适?
    Elasticsearch 之聚合分析入门
    Go语言之旅:基本类型
    Go语言之旅:包
    网络七层协议之数据链路层
    网络七层协议之物理层
  • 原文地址:https://www.cnblogs.com/linjiqin/p/2018411.html
Copyright © 2011-2022 走看看