Dynamiczny SQL do tworzenia widoków

0

Cześć,

Proszę o pomoc, napisałem procedure create view, której celem jest tworzenie widoków osobno dla poszczególnych użytkowników

create or replace PROCEDURE         "CREATE_VIEW"("P_VIEW_NAME" IN VARCHAR2, "P_VIEW_DEF" IN VARCHAR2 )
IS 
tabela varchar2(100):= 'PERSON@AL';
kursor sys_refcursor;
PERSON number;
sql_stmt  VARCHAR2(200);
begin 
open kursor for 'select PERSON_ID  from '||tabela;
fetch kursor into PERSON;
close kursor;
loop sql_stmt := 'create or replace view '|| P_VIEW_NAME||PERSON||' AS '||P_VIEW_DEF;
EXECUTE IMMEDIATE sql_stmt;

end loop;

END;

W tabeli PERSON@AL jest około 20 rekordów chciałbym uzyskać po przeliczeniu procedury 20 widoków z tą samą definicją, ale z rożnymi nazwami zależnymi od danych w tabeli PERSON.

Wywołuje procedurę jako

DECLARE
  P_VIEW_NAME VARCHAR2(200);
  P_VIEW_DEF VARCHAR2(200);
BEGIN
  P_VIEW_NAME := 'V_TEST';
  P_VIEW_DEF := 'SELECT * FROM ABC@AL';

  CREATE_VIEW(
    P_VIEW_NAME => P_VIEW_NAME,
    P_VIEW_DEF => P_VIEW_DEF
  );
--rollback; 
END;

1
  1. Opisałeś sytuację, a w czym problem?
  2. Po co Ci 20 widoków o tej samej definicji i różnych nazwach? Jaki problem chcesz rozwiązać?
  3. O synonimach publicznych/prywatnych słyszałeś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1