`
chengyu2099
  • 浏览: 471207 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

oracle procedure cursor 例子

    博客分类:
  • SQL
阅读更多
--1、if
   IF xx==1 WHEN
     BEGIN
      -- do something ...
     END;
   END IF;

--2、while
   WHILE xx>4 LOOP
      BEGIN
      -- do something
      END;
   END LOOP;

--3、for in - cursor
   CURSOR cur IS SELECT * FROM tableName ;
   - -
   ...
   IS
   CURSOR cur IS SELECT * FROM xxtable;
   BEGIN
      FOR cur_result IN cur LOOP
        BEGIN
            v_sum := cur_result.colName1 + cur_result.colName2;
        END;
      END LOOP;
   END;
   --
   CURSOR c_user(c_id NUMBER) IS SELECT NAME FROM xxtable WHERE xxx=c_id;
   OPEN c_user(变量值)
   LOOP
      FETCH c_user INTO v_name;
      EXIT FETCH c_user%NOTFOUND;
      --dosomething ...
   END LOOP;

--4、select ... into...
   BEGIN
     SELECT col1,col2 INTO xx1,xx2 FROM xxtable WHERE xxx ;
   EXCEPTION
   WHEN no_data_found THEN
        xxx
   END;
--5、test
/**
   *******************************************************
*/
-- 1.清空临时表 lock_test 数据 
-- CREATE TABLE lock_test AS SELECT * FROM lock_;.
CREATE OR REPLACE PROCEDURE procedure_02
  AS
      CURSOR cur SELECT * FROM LOCK_INFO;
  BEGIN
      FOR cur_result IN cur LOOP
          BEGIN
               dbms_output.put_line(cur_result.id||cur_result.lock_remark);
          END;
      END LOOP;
  END;
-- package 放返回游标 ( REF_CURSOR  OUT PKG_RDS.T_RETDATASET)
  CREATE OR REPLACE PACKAGE PKG_RDS AS
  TYPE t_RetDataSet IS REF CURSOR;
  END pkg_RDS;
-- 游标 01
CREATE OR REPLACE PROCEDURE PROCEDURE_02
 AS
  CURSOR CUR IS
    SELECT * FROM LOCK_INFO;
BEGIN
  FOR CUR_RESULT IN CUR LOOP
    INSERT INTO lock_test (id)VALUES(CUR_RESULT.id);
    COMMIT;
  END LOOP;
END PROCEDURE_02;
-- 游标 02
CREATE OR REPLACE PROCEDURE PROCEDURE_03 AS
  V_ID   LOCK_INFO.ID%TYPE;
  V_NAME LOCK_INFO.LOCK_REMARK%TYPE;
  CURSOR CUR IS
    SELECT L.ID, L.LOCK_REMARK FROM LOCK_INFO L;
BEGIN
  OPEN CUR;
  LOOP
    FETCH CUR
      INTO V_ID, V_NAME;
    EXIT WHEN CUR%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('insert into ..' || V_ID || ' - ' || V_NAME);
    INSERT INTO LOCK_TEST (ID, LOCK_REMARK) VALUES (V_ID, V_NAME);
    COMMIT;
  END LOOP;
END PROCEDURE_03;

--
分享到:
评论

相关推荐

    pkg_XXX.rar_oracle_oracle record cursor

    在Oracle数据库系统中,"pkg_XXX.rar_oracle_oracle record cursor" 提供了一个学习和参考的案例,涉及到了存储过程、游标(cursor)、记录(record)以及动态SQL和临时表的使用。这些概念是Oracle数据库编程的核心...

    oracle存储过程例子

    在`INSERT_SYS_EMPEE_SEGMENT_GRID.sql`的例子中,如果需要处理大量数据,可能还会涉及到游标(cursor)或者批量插入,以提高数据处理效率。游标允许我们逐行处理查询结果,批量插入则可以一次性插入多行记录,减少...

    Oracle动态执行SQL四种方式的例子

    在这个例子中,我们定义了一个过程`demo`,它接受一个参数`salary`。使用`DBMS_SQL.OPEN_CURSOR`打开一个游标,然后通过`DBMS_SQL.PARSE`解析SQL语句,并用`DBMS_SQL.BIND_VARIABLE`绑定变量,最后调用`DBMS_SQL....

    比较完整的一个创建Oracle存储过程的例子

    在这个例子中,`CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p` 定义了一个名为 `xxxxxxxxxxx_p` 的存储过程。 2. **参数定义**: 参数定义部分如 `IN is_ym CHAR`,`IN` 表示输入参数,`OUT` 表示输出参数。在这个...

    java调用oracle存储过程返回结果集,Record,cursor.[参考].pdf

    这个例子展示了如何处理返回Record类型和Cursor类型的存储过程。Record类型在Oracle中是一种自定义的数据结构,可以用来模拟类似结构体的对象,而Cursor则常用于返回多行数据。 首先,我们来看Oracle数据库端的设置...

    Oracle 存储过程分页

    CREATE OR REPLACE PROCEDURE get_paged_data (start_row IN NUMBER, page_size IN NUMBER, cursor OUT SYS_REFCURSOR) IS BEGIN OPEN cursor FOR SELECT * FROM ( SELECT t.*, ROWNUM rnum FROM your_table t...

    java调用Oracle存储过程的简单例子源码

    在这个例子中,`OracleTypes.CURSOR`是Oracle JDBC驱动特有的类型,表示返回的是一个游标。 为了实现以上功能,你需要确保已经引入了Oracle JDBC驱动(ojdbc.jar或ojdbc6.jar等)到项目类路径,并且数据库连接配置...

    oracle的存储过程如何返回结果集

    本文将详细介绍Oracle存储过程如何返回结果集的方法,并通过具体的例子进行说明。 #### 二、存储过程返回结果集的原理 在Oracle中,存储过程可以通过引用游标(Ref Cursor)来返回结果集。Ref Cursor是一种特殊...

    oracle存储过程超详细使用手册

    Oracle存储过程是一组为了完成特定功能的SQL语句集,它被编译并存储在数据库中,可以被多次调用执行,提高代码的复用性并减少网络流量。本手册将详细介绍Oracle存储过程的创建、变量使用、控制结构、游标等高级特性...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    cs.registerOutParameter(1, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(1); while (rs.next()) { // 处理每一行数据 } ``` 在提供的`ConnUtils2.java`文件中,很可能...

    Oracle 返回多个结果集

    这就涉及到了Oracle数据库的游标(Cursor)和PL/SQL的处理机制。下面将详细阐述如何在Oracle中实现返回多个结果集。 首先,理解游标是关键。游标是一种数据库对象,用于遍历查询结果集。在Oracle中,有两种类型的...

    ORACLE存储过程简析及C#调用.docx

    在PL/SQL(Oracle的编程语言)中,存储过程不支持像T-SQL那样通过`SELECT * FROM table`来获取记录集,而是使用Ref Cursor(引用游标)来返回结果集。Ref Cursor是PL/SQL中的一个重要概念,它允许存储过程返回动态...

    ORACLE NO_DATA_FOUND的三种处理办法

    在这个例子中,如果游标没有找到任何数据,程序将执行`WHEN NO_DATA_FOUND THEN`后面的代码,而不是抛出错误。 **方法二:使用%NOTFOUND属性** 在`FETCH`语句之后,你可以检查游标的`%NOTFOUND`属性来确定是否已经...

    Oracle游标使用详解

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...

    oracle的存储过程学习资料

    在这个例子中,`my_procedure`是过程名,`param1`和`param2`是参数,`IN`表示输入参数,`OUT`表示输出参数。 3. **调用存储过程** 调用存储过程使用`EXECUTE`关键字,如`EXEC my_procedure(value1, variable2);`...

    delphi调用Oracle的存储过程

    本篇文章将详细介绍如何在Delphi中调用Oracle数据库中的存储过程,并通过一个具体的例子来展示整个过程。 #### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_...

    ORACLE_cusor.rar_oracle

    CREATE OR REPLACE PROCEDURE proc_name(par_id IN number) IS cursor_name CURSOR FOR SELECT * FROM table_name WHERE id = par_id; var_column1 datatype1; var_column2 datatype2; BEGIN OPEN cursor_name;...

    oracle 数据库的 函数 和包

    下面通过几个例子来详细了解Oracle函数的创建与使用: #### 1. 创建不带参数的简单函数 ```sql CREATE OR REPLACE FUNCTION fun_test RETURN INTEGER IS BEGIN RETURN 1000; END; ``` 此函数名为`fun_test`,...

    动态查询oracle加反射

    cs.registerOutParameter(2, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2); while (rs.next()) { // 处理结果集 } ``` **说明文档.txt**: 这个文件可能详细解释了如何结合...

Global site tag (gtag.js) - Google Analytics