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;