--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;
--
分享到:
相关推荐
在Oracle数据库系统中,"pkg_XXX.rar_oracle_oracle record cursor" 提供了一个学习和参考的案例,涉及到了存储过程、游标(cursor)、记录(record)以及动态SQL和临时表的使用。这些概念是Oracle数据库编程的核心...
在`INSERT_SYS_EMPEE_SEGMENT_GRID.sql`的例子中,如果需要处理大量数据,可能还会涉及到游标(cursor)或者批量插入,以提高数据处理效率。游标允许我们逐行处理查询结果,批量插入则可以一次性插入多行记录,减少...
在这个例子中,我们定义了一个过程`demo`,它接受一个参数`salary`。使用`DBMS_SQL.OPEN_CURSOR`打开一个游标,然后通过`DBMS_SQL.PARSE`解析SQL语句,并用`DBMS_SQL.BIND_VARIABLE`绑定变量,最后调用`DBMS_SQL....
在这个例子中,`CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p` 定义了一个名为 `xxxxxxxxxxx_p` 的存储过程。 2. **参数定义**: 参数定义部分如 `IN is_ym CHAR`,`IN` 表示输入参数,`OUT` 表示输出参数。在这个...
这个例子展示了如何处理返回Record类型和Cursor类型的存储过程。Record类型在Oracle中是一种自定义的数据结构,可以用来模拟类似结构体的对象,而Cursor则常用于返回多行数据。 首先,我们来看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...
在这个例子中,`OracleTypes.CURSOR`是Oracle JDBC驱动特有的类型,表示返回的是一个游标。 为了实现以上功能,你需要确保已经引入了Oracle JDBC驱动(ojdbc.jar或ojdbc6.jar等)到项目类路径,并且数据库连接配置...
本文将详细介绍Oracle存储过程如何返回结果集的方法,并通过具体的例子进行说明。 #### 二、存储过程返回结果集的原理 在Oracle中,存储过程可以通过引用游标(Ref Cursor)来返回结果集。Ref Cursor是一种特殊...
Oracle存储过程是一组为了完成特定功能的SQL语句集,它被编译并存储在数据库中,可以被多次调用执行,提高代码的复用性并减少网络流量。本手册将详细介绍Oracle存储过程的创建、变量使用、控制结构、游标等高级特性...
cs.registerOutParameter(1, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(1); while (rs.next()) { // 处理每一行数据 } ``` 在提供的`ConnUtils2.java`文件中,很可能...
这就涉及到了Oracle数据库的游标(Cursor)和PL/SQL的处理机制。下面将详细阐述如何在Oracle中实现返回多个结果集。 首先,理解游标是关键。游标是一种数据库对象,用于遍历查询结果集。在Oracle中,有两种类型的...
在PL/SQL(Oracle的编程语言)中,存储过程不支持像T-SQL那样通过`SELECT * FROM table`来获取记录集,而是使用Ref Cursor(引用游标)来返回结果集。Ref Cursor是PL/SQL中的一个重要概念,它允许存储过程返回动态...
在这个例子中,如果游标没有找到任何数据,程序将执行`WHEN NO_DATA_FOUND THEN`后面的代码,而不是抛出错误。 **方法二:使用%NOTFOUND属性** 在`FETCH`语句之后,你可以检查游标的`%NOTFOUND`属性来确定是否已经...
根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...
在这个例子中,`my_procedure`是过程名,`param1`和`param2`是参数,`IN`表示输入参数,`OUT`表示输出参数。 3. **调用存储过程** 调用存储过程使用`EXECUTE`关键字,如`EXEC my_procedure(value1, variable2);`...
本篇文章将详细介绍如何在Delphi中调用Oracle数据库中的存储过程,并通过一个具体的例子来展示整个过程。 #### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_...
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函数的创建与使用: #### 1. 创建不带参数的简单函数 ```sql CREATE OR REPLACE FUNCTION fun_test RETURN INTEGER IS BEGIN RETURN 1000; END; ``` 此函数名为`fun_test`,...
cs.registerOutParameter(2, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2); while (rs.next()) { // 处理结果集 } ``` **说明文档.txt**: 这个文件可能详细解释了如何结合...