PL/SQL %rowtype 变量声明表示内连接

Mil*_*dis 0 oracle plsql

在我的 PL/SQL 脚本中,当 JUSTIFIC_REC 表示联接时,如何声明它?

 SELECT * 
 INTO JUSTIFIC_REC
 FROM TABLE1 A  
 INNER JOIN TABLE2 B 
 ON A.ID_JUSTIFIC = B.ID_JUSTIFIC ;
Run Code Online (Sandbox Code Playgroud)

我想要的只是将一个串联行插入到 TABLE3 中:

 INSERT INTO MOF_OUTACCDTL_REQ VALUES(
    JUSTIFIC_rec.ENTRY_COMMENTS || '   ' || JUSTIFIC_rec.DESCRIPTION );
Run Code Online (Sandbox Code Playgroud)

我的脚本开头的 JUSTIFIC_REC 声明应该如何?

如果不是 INNER JOIN ,我会写类似: JUSTIFIC_rec TABLE1%ROWTYPE;

小智 5

如果我理解正确,您可以尝试使用这样的游标行类型(不确定这是否是您为带有连接的选择声明变量类型的意思):

set serveroutput on;
declare

cursor cur is 
 SELECT ENTRY_COMMENTS, DESCRIPTION   
 FROM TABLE1 A  
 INNER JOIN TABLE2 B 
 ON A.ID_JUSTIFIC = B.ID_JUSTIFIC ;

justific_rec cur%ROWTYPE;

begin

open cur;
loop
    fetch cur into justific_rec;
    exit when cur%notfound;
    dbms_output.put_line(justific_rec.entry_comments || ' ' || justific_rec.description);
end loop;
close cur;

end;
Run Code Online (Sandbox Code Playgroud)

  • 显式游标在很大程度上被认为是开销,但它们有其用途,这就是其中之一。 (2认同)