PL / SQL从JOIN子句问题中获取记录

时间:2019-01-14 12:12:11

标签: sql plsql

这是我要问的第二个问题,因此,我将尽力更加具体和简短。

在我的pl / sql脚本中,我尝试将来自许多不同表的一些记录插入到表中。我实现了这一点,除了来自2个表的JOIN的字段之外。

INSERT语句放入以下循环:

  FOR FST_DEMAND_rec IN (
  SELECT * 
   FROM A 
   WHERE  FK_DEPOSIT_ACCOACC = DEPOSIT_ACC_rec.ACCOUNT_NUMBER 
   AND TRX_DATE BETWEEN '01-JAN-2018' AND '31-DEC-2018'       
   ORDER BY TRANS_SER_NUM , ENTRY_SER_NUM ASC)
LOOP 

此循环放入以下光标循环:

 FOR T IN MOF_CURSOR LOOP 

因此,实际上位于2个循环中的INSERT语句如下:

 INSERT INTO MOF_OUT
 VALUES(
    T.MOF_REQUEST_ID,                                               
    LOC_SERIAL_NUM,                                                   
   '2B',                                                                  
   CAST(FST_DEMAND_rec.TRX_UNIT || TO_CHAR(FST_DEMAND_rec.TRX_DATE,'YYYYMMDD') || FST_DEMAND_rec.TRX_USR || FST_DEMAND_rec.TRX_SN AS CHAR(50) ),          
   TO_CHAR(FST_DEMAND_rec.TRX_DATE,'YYYY-MM-DD') ,                    
   CAST(FST_DEMAND_rec.TRX_UNIT AS CHAR(4) ) ,                        
   UNIT_rec.UNIT_NAME ,                                               
   CAST(FST_DEMAND_rec.ID_TRANSACT AS CHAR(6) ),                      
   PRFT_TRANS_rec.DESCRIPTION,                                        
  -- 'MY PROBLEMATIC FIELD'                                                          
   TO_CHAR(FST_DEMAND_rec.TIMESTAMP,'hh24miss'),                      
   FST_DEMAND_rec.ENTRY_AMOUNT,                                       
   LOC_DC_FLAG,                                                         
   LOC_PROGR_BALANCE,                                                 
   LOC_PROGR_BAL_IND                                                              
  ) ;

INSERT语句工作正常,但我不知道如何用SELECT子句填充来自以下JOIN语句的记录:

  SELECT A.ENTRY_COMMENTS || '  ' || B.DESCRIPTION 
  FROM FST_DEMAND_EXTRAIT A INNER JOIN JUSTIFIC B ON A.ID_JUSTIFIC = B.ID_JUSTIFIC

例如,我在PRFT_TRANS_rec中使用的INSERT变量,它被声明为PRFT_TRANSACTION%ROWTYPE;,并且我有以下SELECT语句,它位于这两个变量中循环:

SELECT *
INTO PRFT_TRANS_rec 
FROM PRFT_TRANSACTION PRFT_TRANS
WHERE PRFT_TRANS.ID_TRANSACT = FST_DEMAND_rec.ID_TRANSACT;

0 个答案:

没有答案