![](/img/trans.png)
[英]How can I insert rows from one table to another in PL SQL using the cursor for loop?
[英]I want to covert rows from one table to columns to another table using Procedures(Pl/sql)
table A:
col1
_______________________
jack
1200
20
peter
2000
10
robert
300
30
至
table B :
name sal deptno
-----------------------
jack 1200 20
peter 2000 10
robert 300 30
在這里我想通過使用過程參數。 您能幫我嘗試一下嗎,但是出現錯誤。
create procedure GetDatafromtable_A(V_1 in varchar2)
as
CURSOR rwdatacursor IS select Raw_Data from table_a where rowid<=3)
T_record rwdatacursor%rowtype;
begin
open rwdatacursor;
loop
fetech rwdatacursor into T_record;
exit when rwdatacursor%NOTFUND;
insert into temp_process;
end loop
close rwdatacursor;
end;
這是我嘗試過的編碼器,但顯示很多錯誤
一種方法是:
PROCEDURE CONVERT_TABLES IS
CURSOR DATA_CURSOR IS
SELECT COL1
FROM TABLE_A;
row1 DATA_CURSOR%ROWTYPE;
row2 DATA_CURSOR%ROWTYPE;
row3 DATA_CURSOR%ROWTYPE;
BEGIN
OPEN DATA_CURSOR;
LOOP
FETCH DATA_CURSOR INTO row1;
EXIT WHEN DATA_CURSOR%NOTFOUND;
FETCH DATA_CURSOR INTO row2;
EXIT WHEN DATA_CURSOR%NOTFOUND;
FETCH DATA_CURSOR INTO row3;
EXIT WHEN DATA_CURSOR%NOTFOUND;
INSERT INTO TABLE_B (NAME, SAL, DEPTNO)
VALUES (row1.COL1, row2.COL1, row3.COL1);
END LOOP;
CLOSE DATA_CURSOR;
END CONVERT_TABLES;
分享並享受。
嘗試這個。 假設每個consecutive three rows are name sal and deptno
。 可能是一些復雜的邏輯,但如果有幫助,請嘗試一下。
CREATE TABLE #temp(slNo INT IDENTITY(1,1),col1 VARCHAR(50))
INSERT INTO #temp
SELECT col1 FROM table_A
INSERT INTO table_B(name , sal , deptno)
SELECT name,sal,depno
FROM
( SELECT col1 AS name, ROW_NUMBER() OVER (ORDER BY col1) AS RowNum
FROM #temp WHERE slNo % 3 =1) AS T1
FULL OUTER JOIN
(SELECT col1 AS sal, ROW_NUMBER() OVER (ORDER BY col1) AS RowNum
FROM #temp WHERE slNo%3=2) AS T2
ON T2.RowNum = T1.RowNum
FULL OUTER JOIN
(SELECT col1 AS depno, ROW_NUMBER() OVER (ORDER BY col1) AS RowNum
FROM #temp WHERE slNo%3=0) AS T3
ON T3.RowNum = T2.RowNum
)
結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.