Plsql 循环光标

Plsql 循环光标,plsql,oracle11g,Plsql,Oracle11g,朋友 我正在编写一个程序,它执行以下操作 1> 将临时表接收的所有数据插入主表 2一旦我们在主表中有了数据 -将金额乘以-1 -将记录插入TEMP2表 为了完成上述任务 我的程序看起来像 CREATE OR REPLACE PROCEDURE MyProcesure(USER IN VARCHAR2, VO_ERROR_CODE OUT NUMBER,

朋友

我正在编写一个程序,它执行以下操作

1> 将临时表接收的所有数据插入主表 2一旦我们在主表中有了数据 -将金额乘以-1 -将记录插入TEMP2表

为了完成上述任务

我的程序看起来像

CREATE OR REPLACE PROCEDURE MyProcesure(USER        IN VARCHAR2,
                                        VO_ERROR_CODE  OUT NUMBER,
                                        VO_ERROR_DESC  OUT nocopy VARCHAR2) IS

    v_data      VARCHAR2(2000);     

BEGIN


    VO_ERROR_CODE     := 0;
    VO_ERROR_DESC     := 'Success';

-- Insert all the data received by a temp table  into the main table 

INSERT INTO MAIN_TABLE (
COLUMN1,
COLUMN2,
COLUMN3,
COLUMN4)
SELECT M,COL1,
       M.COL2,
       M.COL3,
       M.COL4
FROM TEMP M 
WHERE M.A = VARIABLE1 ; 

-- Once we have the data in the main table 
 - Multiple the amount by -1 
  - Insert the records to TEMP2 Table
FOR v_data in
( SELECT COL1, COL2, COL3, COl4 FROM MAIN TABLE )   

LOOP

    v_data.COL2 := v_data.COL2 * -1 ; 


INSERT INTO TEMP2 
      (       COL1,
          COL2,
          COL3,
          COL4          
      )
    SELECT SELECT M.COL1, M.COL2, M.COL3, M.COl4 FROM MAIN TABLE; 

     GROUP BY M.COL1;

 END;
我使用了Oracle游标FOR循环,请告诉我这是否完美,或者我也可以使用显式游标。
谢谢

我正试图理解你想要什么,但即使是语法也是无效的。。。在该循环中(以伪代码形式读取),您所做的是将temp2表中的所有记录重新插入主_表中的“每个”记录,因此基本上您所做的是将这些记录相乘

我猜您想要的是将COL2数据乘以-1,所以您应该删除循环并将

插入TEMP2(COL1、COL2、COL3、COL4) 从主表中选择M.COL1、M.COL2*-1、M.COL3、M.COl4

除此之外,请检查M.COL1所在的
分组是否符合您的要求

但首先,您应该学习pl/sql语法及其主要概念