`
ahuzl007
  • 浏览: 25724 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

plsql 块一个小例子(循环更新,游标使用)

 
阅读更多
set echo off
set termout on
set serveroutput on size 10000
set lines 120
set pages 20000
set trimspool on

DECLARE 
	CURSOR C_DR_OPERATION_LOG 
	IS
	    SELECT
	            OPERATION_LOG_NO
	            ,SYS_ENTRY_USER_INFO_CD
	        FROM
	            XXXTH_DR_OPERATION_LOG
	        WHERE
	            SCREEN_NM = '初回電子署名同意'
	            AND SCREEN_ID = 'addin-dr-001.0014'
	            AND (
	                ACTION = '「同意」ボタン押下'
	                OR ACTION LIKE '電子署名%'
	            )
	            AND CHOSA_CD IS NULL
	            AND CONTRACT_CD IS NULL;      
	 V_CHOSA_CD_A XXXTH_DR_OPERATION_LOG.CHOSA_CD%TYPE;     
	 V_CONTRACT_CD_A  XXXTH_DR_OPERATION_LOG.CONTRACT_CD%TYPE; 
	 ROWCOUNT NUMBER := 0;        
BEGIN 
	DBMS_OUTPUT.PUT_LINE('#------------------------------------  更新を開始します。 ------------------------------------#');
	FOR C_DR_OPERATION_LOG_REC IN C_DR_OPERATION_LOG LOOP
		--調査コードを更新
		UPDATE
	        XXXTH_DR_OPERATION_LOG
	    SET
	        CHOSA_CD = (SELECT CHOSA_CD FROM XXXTR_CONTRACT_DR_USER WHERE USER_INFO_CD = C_DR_OPERATION_LOG_REC.SYS_ENTRY_USER_INFO_CD)
			,SYS_UPDATE_DATETIME = SYSDATE
	        ,SYS_UPDATE_USER_INFO_CD = 'SYSTEM'
	    WHERE
	        OPERATION_LOG_NO = C_DR_OPERATION_LOG_REC.OPERATION_LOG_NO;
	    SELECT CHOSA_CD INTO V_CHOSA_CD_A FROM XXXTH_DR_OPERATION_LOG WHERE OPERATION_LOG_NO = C_DR_OPERATION_LOG_REC.OPERATION_LOG_NO;   
		
	    --契約コードを更新
		UPDATE
		        XXXTH_DR_OPERATION_LOG
	    SET
	        CONTRACT_CD = (SELECT CONTRACT_CD FROM XXXTR_CONTRACT_DR_USER WHERE USER_INFO_CD = C_DR_OPERATION_LOG_REC.SYS_ENTRY_USER_INFO_CD)
			,SYS_UPDATE_DATETIME = SYSDATE
	        ,SYS_UPDATE_USER_INFO_CD = 'SYSTEM'
	    WHERE
        	OPERATION_LOG_NO = C_DR_OPERATION_LOG_REC.OPERATION_LOG_NO;
        ROWCOUNT := C_DR_OPERATION_LOG%ROWCOUNT;
	    SELECT CONTRACT_CD INTO V_CONTRACT_CD_A FROM XXXTH_DR_OPERATION_LOG WHERE OPERATION_LOG_NO = C_DR_OPERATION_LOG_REC.OPERATION_LOG_NO;   
	    DBMS_OUTPUT.PUT_LINE('オペレーションログ番号 : ' || C_DR_OPERATION_LOG_REC.OPERATION_LOG_NO || '  更新後  ⇒  ' ||'CHOSA_CD : ' || V_CHOSA_CD_A || '  ,' || 'CONTRACT_CD : ' || V_CONTRACT_CD_A);
	END LOOP;
	DBMS_OUTPUT.PUT_LINE('#------------------------------------- ' || ROWCOUNT || '行更新されました -------------------------------------#');
	COMMIT;
EXCEPTION 
	WHEN OTHERS THEN
		ROLLBACK;	
		DBMS_OUTPUT.PUT_LINE('ロールバックしました。');
END;
/



 
分享到:
评论

相关推荐

    PLSQL游标编程培训内含实例

    1. 声明:首先,我们需要在DECLARE部分声明一个游标,指定一个SQL查询语句,例如: ```sql DECLARE CURSOR cEmp IS SELECT * FROM Employees; ``` 2. 打开:接着,使用OPEN语句打开游标,使它可以用于读取数据...

    oracle中plsql的一些小例子,初学者可以看看

    这个文件夹里包含了一些本人收集的plsql里的小例子,比如for循环,IF判断等流程控制,程序包,触发器,游标,数组,异常处理,过程与函数。当你忘记它们的格式时可以翻出来看一看,例子简单易读,很适合初学者。

    PLSQL学习经典例子

    通过"PLSQL学习经典例子"中的31个例子,你可以逐步掌握这些概念,并通过实际操作加深理解,比如如何创建和调用存储过程,如何使用游标处理大量数据,以及如何处理程序运行时可能出现的异常。这些例子将是你学习PLSQL...

    PLSQL操作存储过程、函数、游标、触发器、定时任务等实例SQL脚本.zip

    2. **函数**:与存储过程类似,函数也是预编译的代码块,但其返回一个值。函数通常用于计算或检索单一数据项。在PL/SQL中,我们可以定义自定义函数,然后在SQL查询或其它PL/SQL代码中使用它们。实例脚本可能展示了...

    oracle游标使用大全3

    下面通过一个具体的例子来展示如何使用显式游标: ```plsql DECLARE CURSOR c_dept IS SELECT deptno, dname FROM dept ORDER BY deptno; CURSOR c_emp(p_dept VARCHAR2) IS SELECT ename, salary FROM emp...

    Oracle数据库的游标学习总结

    下面是一个使用隐式游标的示例: ```plsql DECLARE BEGIN UPDATE emp SET sal = sal * 1.05 WHERE job = 'CLERK'; DBMS_OUTPUT.PUT_LINE('UPDATE影响了'|| SQL%ROWCOUNT ||'条记录'); END; ``` 在这个示例中,...

    PLSQL笔记-从hello word到触发器,包,游标高级应用

    以下是如何使用游标的一个例子: ```sql DECLARE cursor_example CURSOR FOR SELECT id, name, salary FROM employees WHERE department_id = 100; emp_record employee_management.employee_rec; BEGIN OPEN ...

    PLSQL 实际开发例子

    PLSQL,全称为Procedural Language/SQL,是Oracle数据库提供的一个编程环境,结合了SQL的查询能力与过程式编程语言的功能,使得开发者能够编写存储过程、函数、触发器等数据库对象,从而实现复杂的数据库管理和应用...

    Oracle PLSQL9i 程序设计中的例子脚本

    异常处理是PLSQL的另一个亮点,使用TRY-CATCH模型来捕获和处理错误。通过EXCEPTION部分,我们可以定制异常处理策略,比如捕获特定的数据库错误,或者定义自己的异常。 PLSQL还支持自定义类型的声明,如记录类型...

    CDC积累的plsql用的各种例子

    压缩包文件“SqlCode”很可能是一个包含多个SQL和PL/SQL脚本的文件夹或文件,每个都对应一个具体的使用场景或技术点。用户可以通过打开这个文件来查看和运行这些代码,从而学习各种PL/SQL编程技巧。 在PL/SQL的学习...

    Oracle数据库实验-PLSQL游标、过程、函数、包的使用[文].pdf

    在实验的第一个部分,我们看到了如何使用显式游标计算每个部门的平均工资。这里,我们先声明了一个名为c_dept的游标,用于遍历DEPT表,然后用另一个游标c_emp根据部门编号(p_dept)获取该部门的员工工资。在循环中...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    总的来说,这个压缩包文件提供了一个全面的PL/SQL学习资源,涵盖了基础的SQL操作、游标使用、数据更新、触发器以及循环结构,并且展示了与Java的交互。通过分析和实践这些脚本,初学者可以深入理解PL/SQL编程,并...

    ORACLE游标与异常处理

    然后,我们打开游标,进入一个循环,每次从游标中提取一行数据到变量`var1`和`var2`,并打印这些值。当没有更多的行可取时,`cursor_name%NOTFOUND`条件为真,退出循环。最后,关闭游标以释放资源。 接下来,我们...

    Oracle游标学习二

    这个例子中,我们声明了一个游标,打开它,然后在循环中逐行提取数据,直到没有更多行为止。 总结来说,Oracle游标是数据库开发中不可或缺的一部分,尤其在处理复杂数据逻辑时。理解游标的工作原理和使用方法,能...

    数据库oracle中PLSQL语句简介及使用方法的举例说明

    例如,以下是一个简单的插入语句: ```sql BEGIN INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'); END; ``` 六、PL/SQL的块结构 PL/SQL的块结构包括匿名块和命名块。匿名块通常用于一次...

    oracle游标

    在这个例子中,我们首先定义了一个游标`cur_employee`,用于获取所有姓“A”的员工信息。然后通过循环遍历游标结果集,并对每个匹配的员工执行薪水更新操作。 ##### 2. 编写一个PL/SQL块,将工资低于500的员工全部...

    PLSQL适合初学者。

    一个完整的PLSQL块通常包括BEGIN、END关键字,其中可以包含多个声明、SQL语句和控制结构。例如: ```sql DECLARE num1 NUMBER := 5; num2 NUMBER := 10; BEGIN -- 声明部分 DBMS_OUTPUT.PUT_LINE('Sum: ' || ...

    PLSQL教程-从入门到精通

    示例:创建一个触发器,在员工表中添加新记录时自动更新员工编号。 ```plsql CREATE OR REPLACE TRIGGER emp_trigger AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE sequences SET seq = seq + 1 WHERE ...

    PLSQL手册1.2

    2. **PLSQL块**:PLSQL程序是由一个或多个块构成的,包括声明部分、执行部分和异常处理部分。声明部分定义变量和游标;执行部分包含SQL语句和PLSQL语句;异常处理部分用于捕获并处理运行时错误。 3. **过程和函数**...

    Oracle PLSQL 从入门到精通

    Oracle PLSQL,全称为Oracle Procedural Language/Structured Query Language,是Oracle数据库系统中的一个编程组件,用于扩展SQL的功能,实现更复杂的业务逻辑。它结合了SQL的查询能力与过程式编程语言的特点,使得...

Global site tag (gtag.js) - Google Analytics