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;
/
分享到:
相关推荐
1. 声明:首先,我们需要在DECLARE部分声明一个游标,指定一个SQL查询语句,例如: ```sql DECLARE CURSOR cEmp IS SELECT * FROM Employees; ``` 2. 打开:接着,使用OPEN语句打开游标,使它可以用于读取数据...
这个文件夹里包含了一些本人收集的plsql里的小例子,比如for循环,IF判断等流程控制,程序包,触发器,游标,数组,异常处理,过程与函数。当你忘记它们的格式时可以翻出来看一看,例子简单易读,很适合初学者。
通过"PLSQL学习经典例子"中的31个例子,你可以逐步掌握这些概念,并通过实际操作加深理解,比如如何创建和调用存储过程,如何使用游标处理大量数据,以及如何处理程序运行时可能出现的异常。这些例子将是你学习PLSQL...
2. **函数**:与存储过程类似,函数也是预编译的代码块,但其返回一个值。函数通常用于计算或检索单一数据项。在PL/SQL中,我们可以定义自定义函数,然后在SQL查询或其它PL/SQL代码中使用它们。实例脚本可能展示了...
下面通过一个具体的例子来展示如何使用显式游标: ```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...
下面是一个使用隐式游标的示例: ```plsql DECLARE BEGIN UPDATE emp SET sal = sal * 1.05 WHERE job = 'CLERK'; DBMS_OUTPUT.PUT_LINE('UPDATE影响了'|| SQL%ROWCOUNT ||'条记录'); END; ``` 在这个示例中,...
以下是如何使用游标的一个例子: ```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,全称为Procedural Language/SQL,是Oracle数据库提供的一个编程环境,结合了SQL的查询能力与过程式编程语言的功能,使得开发者能够编写存储过程、函数、触发器等数据库对象,从而实现复杂的数据库管理和应用...
异常处理是PLSQL的另一个亮点,使用TRY-CATCH模型来捕获和处理错误。通过EXCEPTION部分,我们可以定制异常处理策略,比如捕获特定的数据库错误,或者定义自己的异常。 PLSQL还支持自定义类型的声明,如记录类型...
压缩包文件“SqlCode”很可能是一个包含多个SQL和PL/SQL脚本的文件夹或文件,每个都对应一个具体的使用场景或技术点。用户可以通过打开这个文件来查看和运行这些代码,从而学习各种PL/SQL编程技巧。 在PL/SQL的学习...
在实验的第一个部分,我们看到了如何使用显式游标计算每个部门的平均工资。这里,我们先声明了一个名为c_dept的游标,用于遍历DEPT表,然后用另一个游标c_emp根据部门编号(p_dept)获取该部门的员工工资。在循环中...
总的来说,这个压缩包文件提供了一个全面的PL/SQL学习资源,涵盖了基础的SQL操作、游标使用、数据更新、触发器以及循环结构,并且展示了与Java的交互。通过分析和实践这些脚本,初学者可以深入理解PL/SQL编程,并...
然后,我们打开游标,进入一个循环,每次从游标中提取一行数据到变量`var1`和`var2`,并打印这些值。当没有更多的行可取时,`cursor_name%NOTFOUND`条件为真,退出循环。最后,关闭游标以释放资源。 接下来,我们...
这个例子中,我们声明了一个游标,打开它,然后在循环中逐行提取数据,直到没有更多行为止。 总结来说,Oracle游标是数据库开发中不可或缺的一部分,尤其在处理复杂数据逻辑时。理解游标的工作原理和使用方法,能...
例如,以下是一个简单的插入语句: ```sql BEGIN INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'); END; ``` 六、PL/SQL的块结构 PL/SQL的块结构包括匿名块和命名块。匿名块通常用于一次...
在这个例子中,我们首先定义了一个游标`cur_employee`,用于获取所有姓“A”的员工信息。然后通过循环遍历游标结果集,并对每个匹配的员工执行薪水更新操作。 ##### 2. 编写一个PL/SQL块,将工资低于500的员工全部...
一个完整的PLSQL块通常包括BEGIN、END关键字,其中可以包含多个声明、SQL语句和控制结构。例如: ```sql DECLARE num1 NUMBER := 5; num2 NUMBER := 10; BEGIN -- 声明部分 DBMS_OUTPUT.PUT_LINE('Sum: ' || ...
示例:创建一个触发器,在员工表中添加新记录时自动更新员工编号。 ```plsql CREATE OR REPLACE TRIGGER emp_trigger AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE sequences SET seq = seq + 1 WHERE ...
2. **PLSQL块**:PLSQL程序是由一个或多个块构成的,包括声明部分、执行部分和异常处理部分。声明部分定义变量和游标;执行部分包含SQL语句和PLSQL语句;异常处理部分用于捕获并处理运行时错误。 3. **过程和函数**...
Oracle PLSQL,全称为Oracle Procedural Language/Structured Query Language,是Oracle数据库系统中的一个编程组件,用于扩展SQL的功能,实现更复杂的业务逻辑。它结合了SQL的查询能力与过程式编程语言的特点,使得...