2014-02-28 63 views
0

以下給出的是我的代碼。我需要創建一個視圖,並使用視圖中的數據在另一個遊標中獲取數據。但是,當我執行我的代碼,我得到的錯誤表或視圖不存在

「ORA-06550:行56,列37: PL/SQL:ORA-00942:表或視圖不存在 ORA-06550:行52,第9列: PL/SQL:SQL語句被忽略「

這裏有什麼問題? 在此先感謝。

declare 

drop_view_sql varchar2(100) := 'drop view rv_task_number_view'; 

type tasks_rec is record(task_number varchar2(20)); 

type t_tab is table of tasks_rec; 

tasks_tab t_tab; 

notes_rec xx_fs_mob_loc_rec.task_notes_rec; 

notes_tab xx_fs_mob_loc_rec.task_notes_tab; 

    begin 

     execute immediate 'create view apps.rv_task_number_view as 
          SELECT distinct ct.task_number     
          FROM csf_ct_tasks ct , 

          cs_estimate_details ced, 
          csf_debrief_headers cdh, 
          csf_debrief_lines cdl, 
          jtf_task_assignments jta 

        WHERE 1=1 
        and  jta.task_id = ct.task_id 
        and  jta.task_assignment_id = cdh.task_assignment_id(+) 
        and  cdh.debrief_header_id = cdl.debrief_header_id(+) 
        and  cdl.debrief_line_id = ced.source_id(+) 
        AND  ((ct.planned_end_date between (sysdate-30) and (sysdate+30)) or (ct.scheduled_end_date between (sysdate-30) and (sysdate+30))) 
        and  jta.resource_id = 10153'; 

       execute immediate  'grant select on apps.rv_task_number_view to apps'; 

     DBMS_OUTPUT.PUT_LINE(sqlerrm); 

     declare 

     CURSOR c2 is 

     SELECT ct.task_id,jtf_note_id, jnv.notes, 
       jnv.creation_date,jnv.last_update_date 
      FROM 
       jtf_notes_vl jnv, 
       csf_ct_tasks ct,apps.rv_task_number_view rvt 
      WHERE 
       jnv.source_object_code = 'TASK' 
       and ct.task_number = jnv.source_number 
       and ct.task_number = rvt.task_number 
       order by task_id, jtf_note_id; 

     begin 

     open c2; 

     fetch c2 bulk collect into notes_tab; 

     DBMS_OUTPUT.PUT_LINE(sqlerrm); 

     end; 

     execute immediate drop_view_sql; 

     DBMS_OUTPUT.PUT_LINE(sqlerrm); 

    END; 
+0

當你直接在SQL中輸入命令時它工作嗎? –

回答

6

您試圖訪問使用創造了一個TABLE/VIEW一個動態SQL在同一塊地方,你SELECT它(靜態SQL

PL/SQL座沃爾德是執行編譯。 雖然彙編rv_task_number_view不可用!

因此,SELECT也需要動態!

C2 SYS_REFCURSOR; 

    OPEN C2 FOR 

    'SELECT ct.task_id,jtf_note_id, jnv.notes, 
      jnv.creation_date,jnv.last_update_date 
     FROM 
      jtf_notes_vl jnv, 
      csf_ct_tasks ct,apps.rv_task_number_view rvt 
     WHERE 
      jnv.source_object_code = ''TASK'' 
      and ct.task_number = jnv.source_number 
      and ct.task_number = rvt.task_number 
      order by task_id, jtf_note_id'; 
相關問題