友
我正在编写一个执行以下操作的程序
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 CURSOR FOR LOOP,请告诉我这是否完美,或者我也可以使用显式游标。 谢谢
答案 0 :(得分:2)
我有点想要了解你想要什么,但即使语法无效......在那个循环中(读作伪代码)你正在做的是重新插入temp2表中的所有记录对于main_table中的“every”记录,基本上你正在做的是将记录相乘......
我想你想要的是将COL2数据乘以-1,所以你应该删除循环然后放
INSERT INTO TEMP2(COL1,COL2,COL3,COL4) 从MAIN_TABLE中选择M.COL1,M.COL2 * -1,M.COL3,M.COl4;
除了检查那些GROUP BY M.COL1
那里你想要什么。
但首先应该研究pl / sql语法及其主要概念。