Dynamiczny SQL do tworzenia widoków

Dynamiczny SQL do tworzenia widoków
MM
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Poznań
  • Postów:13
0

Cześć,

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

Kopiuj
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

Kopiuj
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;

YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:6 dni
  • Postów:2370
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ś?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.