ORACLE 循环更新

1.描述

 oracle  AB两表  A主表 B 子表  一对多关系   根据ID 关联   批量更新 将A表中值 存入 B表中

2.方法

  2.1 MERGE 命令

MERGE
INTO
	B b            ---需要更改的表
		USING A a  ---关联查询的表
ON
	(b.ID = a.ID ) ---两表的关联条件
	WHEN MATCHED THEN
UPDATE
SET
	b.column1  = a.column1, ---需要更改的表的字段
	b.column2  = a.column2, ---需要更改的表的字段
	b.column3  = a.column3, ---需要更改的表的字段
	b.column4  = a.column4; ---需要更改的表的字段
	WHEN NOT MATCHED THEN   ---如果不存在    如果不用则直接删除后边
INSERT                      ---则插入
	(column1,
	column2,
	column3)
VALUES ('1',
'2',
'3');

2.2 存储过程

CREATE OR REPLACE PROCEDURE QYYLJG_TWRS_TEST.TEST_ZX_FILE AS

  CURSOR J IS
    SELECT a.ID,b.column1,B.column2
      FROM B b, A a
     WHERE a.ID = ID ;

  ID                VARCHAR2(50);
  column1           VARCHAR2(50);
  column2           VARCHAR2(50);
BEGIN
  OPEN J;
  LOOP
    FETCH J
      INTO ID, column1, column2;
    EXIT WHEN J%NOTFOUND;
    UPDATE B b
       SET b.column1     = column1,
           b.column2     = column2
     WHERE b.ID = ID;
  
  END LOOP;
  CLOSE J;
END;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 Oracle 数据库中,可以使用循环语句来执行重复的操作。 Oracle 支持两种循环语句: 1. 循环结构 LOOP-END LOOP: 语法如下: ``` LOOP statements; END LOOP; ``` 2. 循环结构 FOR-END FOR: 语法如下: ``` FOR index_variable IN lower_bound..upper_bound LOOP statements; END LOOP; ``` 使用循环语句时,需要注意以下几点: - 使用 `EXIT` 语句可以终止循环。 - 使用 `CONTINUE` 语句可以跳过本次循环的剩余部分,执行下一次循环。 - 使用 `GOTO` 语句可以跳转到循环内的某个标签。 示例: ``` BEGIN FOR i IN 1..10 LOOP EXIT WHEN i = 5; DBMS_OUTPUT.PUT_LINE(i); END LOOP; END; ``` 上面的程序会输出 1 到 4 的数字,因为当 `i` 等于 5 的时候,执行了 `EXIT` 语句,终止了循环。 ### 回答2: Oracle循环是指在PL/SQL语言中使用循环结构来重复执行一段代码块的操作。在Oracle数据库中,主要有三种循环结构可供使用,分别是FOR循环、WHILE循环和LOOP循环。 FOR循环是最常用的循环结构,其语法如下: FOR循环计数变量 IN 起始值..结束值 LOOP --执行的代码块 END LOOP; 例如,我们可以用FOR循环来输出1到10的数字: FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(i); END LOOP; WHILE循环是根据一个条件来判断是否执行循环体的循环结构,其语法如下: WHILE 条件 LOOP --执行的代码块 END LOOP; 例如,我们可以用WHILE循环计算1到10的累加和: DECLARE i NUMBER := 1; sum NUMBER := 0; BEGIN WHILE i <= 10 LOOP sum := sum + i; i := i + 1; END LOOP; DBMS_OUTPUT.PUT_LINE('累加和为:' || sum); END; LOOP循环是一种无限循环结构,只有在满足跳出条件时才会结束循环,其语法如下: LOOP --执行的代码块 EXIT WHEN 条件; END LOOP; 例如,我们可以用LOOP循环读取输入,直到用户输入了exit为止: LOOP DBMS_OUTPUT.PUT_LINE('请输入:'); INPUT := GET_LINE; EXIT WHEN INPUT = 'exit'; END LOOP; 总结来说,Oracle循环能够以简洁、灵活的方式实现重复执行一段代码块的需求,开发者可以根据实际情况选择适合的循环结构。 ### 回答3: Oracle中的循环可以使用PL/SQL(Procedural Language/Structured Query Language)来实现。PL/SQL是Oracle数据库的编程语言,允许开发人员在数据库中创建存储过程、函数和触发器等对象。 在Oracle中,有两种常见的循环结构可以使用:FOR循环和WHILE循环。 FOR循环是一种迭代循环结构,它允许我们指定一个循环计数器并定义循环范围。FOR循环的语法如下: ```sql FOR 循环计数器 IN 起始值..结束值 LOOP -- 执行的代码块 END LOOP; ``` 在循环的每次迭代中,循环计数器会自动递增,直到达到结束值为止。在循环体内部,我们可以编写需要重复执行的代码。 WHILE循环是一种条件循环结构,它根据给定的条件不断重复执行。WHILE循环的语法如下: ```sql WHILE 条件 LOOP -- 执行的代码块 END LOOP; ``` 在每次循环迭代之前,首先会检查条件是否为真。只有当条件为真时,WHILE循环才会执行循环体内的代码。 无论是FOR循环还是WHILE循环,我们都可以与SQL语句和PL/SQL代码结合使用。这样可以方便地处理数据表中的多行记录或对结果集进行操作。 总之,Oracle提供了PL/SQL语言来实现循环结构,包括FOR循环和WHILE循环。开发人员可以利用这些循环结构来处理数据库中的数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值