Lekcija 1. Uvod U PLSQL

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 74

1

Uvod u PL/SQL programiranje


Pregled 1 2 3 4 5 Programski blokovi Struktura blokova Procedure Funkcije Upravaljanje procedurama i funkcijama

2002 Prentice Hall. All rights reserved.

1 Uvod Ciljevi
Kreiranje, izvravanje procedura, funkcija, trigera Upotreba potprograma i trigera u aplikacijama Upoznavanje sa nekim osnovnim ugraenim paketima Manipulacija velikim objektima

2002 Prentice Hall. All rights reserved.

1 Uvod SQL
Deklarativni jezik visokog nivoa apstrakcije Sastoji se od relativno malog broja komandi(INSERT, UPDATE, GRANT, DELETE...) Jednostavan za upotrebu, znatno jednostavniji nego proceduralni jezici tree generacije Stotine proceduralnih linija koda su potrebnr da bi zamijenile jednu SELECT naredbu Zbog toga ovaj jezik doivljava veliku popularnost S druge strane, izraajni kapaciteti ovog jezika su ogranieni Neka ogranienje je teko, pa i nemogue, definisati putem SQL mehanizma(poslije prodaje artikla, uveaj saldo za cijenu i smanji broj artikala u skladitu za jedan, samo artiklima skupljim od 100 se moe sniziti cijena za 10%) Postoji potreba da se SQL na neki nain proiri
2002 Prentice Hall. All rights reserved.

1 Uvod PL/SQL
Jezik blizak SQL, tj. podrava veinu koncepata jezika SQL za rad sa bazom podataka U sebi sadri koncepte jezika tree generacije, kao to su uslovno izvravanje(IF), sekvencijalno izvravanje programa, iterativno izvravanje(FOR, WHILE.) Centralizovano izvravanje, tj. programe izvrava server baze podataka Programi pisani putem PL/SQL jezika uvaju se na strani servera, a ne kod klijenata. To podrazumijeva lake odravanje. Promjena se vri na jednom mjestu i odmah postaje vidljiva svim klijentima.

2002 Prentice Hall. All rights reserved.

1 Uvod Pojednostavljeni pogled na PL/SQL i Oracle server

2002 Prentice Hall. All rights reserved.

1 Uvod Prednosti
Programi pisani putem PL/SQL jezika uvaju se na strani servera, a ne kod klijenata. To podrazumijeva lake odravanje. Promjena se vri na jednom mjestu i odmah postaje vidljiva svim klijentima. Da li je bolje koristi pravi jezik kao C? C podrava komunikaciju sa Oracle bazom, ali razliite biblioteke razliitih proizvoaa nijesu 100% kompatibilne. Programi iste namjene pisani u PL/SQL su laki za pisanje i efikasniji. PL/SQL uva varijable u istom formatu kao i server. Kada koristite programski jezik opte namjene npr. Java, gubi se vrijeme na preformatiranje podataka. Moe se desiti da numeriki tip podatka server uva u jednom formatu, a programski jezik u drugom.
2002 Prentice Hall. All rights reserved.

1 Uvod Prednosti:
PL/SQL se izvrava u istom memorijskom protoru kao i server, te se jako malo vremena gubi na komunikaciju. PL/SQL kod je interpretiran, ali od verzije 9i uveden je i native execution. PL/SQL kod se prevodi u C kod, a potom u binarni.

2002 Prentice Hall. All rights reserved.

1 Uvod Nedostaci
Kompanija Oracle je vlasnik, te se on moe koristi samo sa proizvodima te kompanije. Drugi proizovai ga ne podravaju Malo je alata za rad sa ovim jezikoma, koji komuniciraju direktno sa serverom baze podataka. Obino se koristi drugi jezik kao Front-End, koji potom komunicira sa serverom

2002 Prentice Hall. All rights reserved.

1 Uvod Kako poeti:


Instalirati Oracle server baze podataka Pristupiti bazi putem neke klijentske aplikacije napr. SQL*Plus. Ukoliko koncekcija nije mogua, definisati parametre u fajlu tnsnames.ora Mogua je konkecija na udaljene servere, itd.

2002 Prentice Hall. All rights reserved.

10

<heade> IS|AS DECLARE //opciono //varijable, kursori i korisniki definisani izuzeci BEGIN -SQL naredba -PLSQL naredba

Outline
Struktura PL/SQL bloka

EXCEPTION
END;

2002 Prentice Hall.


All rights reserved.

11

--Primjer PLSQL bloka DECLARE v_variable VARCHAR2(5); BEGIN DBMS_OUTPUT.PUT_LINE(Hello world); EXCEPTION WHEN exception_name THEN END;

Outline
Struktura PL/SQL bloka

2002 Prentice Hall.


All rights reserved.

12

1 Uvod Svaka programska konstrukcija u PL/SQL-u sastoji se od blokova Blokovi mogu biti ugnjedeni meusobno PL/SQL blokovi mogu se izvravati na serveru(kao stored procedure, func. itd.), a takoe mogu biti kreirani putem alata kao to su Oracle Forms Developer, Oracle Report Developer, id.

2002 Prentice Hall. All rights reserved.

13

Podjela blokova

2002 Prentice Hall. All rights reserved.

14

Pregled potprograma

Potprogram je imenovani PL/SQL blok kojem se predaju neki parametri i koji moe biti pozvan iz nekog okruenja Dijele se na procedure i funkcije
Procedure
izravaju neku akciju Funkcije raunaju neku vrijednost

2002 Prentice Hall. All rights reserved.

15

Pregled potprograma Upotreba potprograma


Poveava itljivost koda Omoguava lake odraavanje i ponovnu upotrebu koda Programski kod se nalazi na jednom mjestu, pa promjena neke procedure ili funkcije zahtijeva samo jednu izmjenu Poveava se sigurnost jer je mogue definisati koji korisnik smije da izvrava odreeni blok naredbi Takoe, putem potprograma je mogue kontrolisati pristup podacima

2002 Prentice Hall. All rights reserved.

16

Pregled potprograma Zaglavlje imenovanih PL/SQL blokova u sebi nosi informaciju o:


Tipu potprograma Imenu Nainu poziva Listi parametra, ako je ima Povratnom tipu, ako se radi o funkciji

2002 Prentice Hall. All rights reserved.

17

Deklaracija varijabli Vri se u DECLARE sekciji Osnovi tipovi podataka


VARCHAR2 (maximum_length) NUMBER [(precision, scale)] DATE CHAR [(maximum_length)] LONG LONG RAW BOOLEAN BINARY_INTEGER PLS_INTEGER

2002 Prentice Hall. All rights reserved.

18

Deklaracija varijabli Moe se vriti i putem TYPE kvalifikatova


Primjer

... v_ime zaposleni.ime%TYPE ...

Tip podatka za varijablu v_ime je onaj tip podataka koji odgovara koloni ime u tabeli zaposleni

2002 Prentice Hall. All rights reserved.

19

PL/SQL Naredbe PL/SQL naredba moe biti


Poziv ugraene ili korisniki definisane funkcije ili procedure IF blok WHILE blok FOR blok ....

2002 Prentice Hall. All rights reserved.

20

PL/SQL Naredbe Postoji veliki broj ugraenih funkcija


Primjer
v_mailing_address := v_name||CHR(10) || v_address||CHR(10)||v_state|| CHR(10)||v_zip;

Konverzija imena zaposlenog u mala slova

v_ename:= LOWER(v_ename);

2002 Prentice Hall. All rights reserved.

21

PL/SQL Naredbe Funkcije za konverziju:


TO_CHAR(vrijednost, format) TO_DATE (vrijednost,format) TO_NUMBER (vrijednost, format)

2002 Prentice Hall. All rights reserved.

22

--Primjer upotrebe funkcije za konverziju DECLARE v_datum VARCHAR2(15); BEGIN SELECT TO_CHAR(datum_zaposlenja, 'MON. DD, YYYY') INTO v_datum FROM zaposleni WHERE zid = 7839; END;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

23

PL/SQL Naredbe Varijabla v_datum je deklarisana kao DATE, pa ova naredba dovodi do greke
v_datum :=
'January 13, 1998';

Treba koristiti funkciju za konverziju TO_DATE()


v_datum := TO_DATE('January 13, 1998', 'Month DD, YYYY');

2002 Prentice Hall. All rights reserved.

24

PL/SQL Naredbe Strukutura select naredbe

SELECT select_list INTO{variable_name[, variable_name]...| record_name} FROM table WHERE condition;

2002 Prentice Hall. All rights reserved.

25

--Primjer upotrebe SELECT naredbe DECLARE v_oid NUMBER(2); v_ime VARCHAR2(15); BEGIN SELECT oid, ime INTO v_oid, v_ime FROM odjeljenje WHERE oid = 1; ... END;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

26

--Primjer select naredbe DECLARE v_suma_plata zaposleni.plata%TYPE; v_oid NUMBER NOT NULL := 10; BEGIN SELECT sum(plata) INTO v_suma_plata FROM zaposleni WHERE oid = v_oid; ... END;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

27

PL/SQL Naredbe Strukutura IF naredbe

IF logicki_uslov THEN lista_naredbi; [ELSIF logicki_uslov THEN lista_naredbi;] [ELSIF logicki_uslov THEN lista_naredbi;]
2002 Prentice Hall. All rights reserved.

28

--Primjer if naredbe IF v_ime = 'tehnika' THEN v_id := 10; END_IF;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

29

--Primjer elsif naredbe IF v_start > 200 THEN v_iznos := v_iznos * 2; ELSIF v_start > 300 THEN v_iznos := v_iznos * 3; ELSIF v_start > 400 THEN v_iznos := v_iznos * 4; END_IF;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

30

PL/SQL Naredbe Opsta struktura petlji

LOOP lista_naredbi; EXIT [WHEN uslov]; END LOOP

2002 Prentice Hall. All rights reserved.

31

PL/SQL Naredbe For i WHILE sintaksa

FOR broja in [REVERSE] donja..gornja LOOP lista_naredbi; END LOOP;


WHILE uslov LOOP lista_naredbi; END LOOP;

2002 Prentice Hall. All rights reserved.

32

--Primjer FOR naredbe


BEGIN FOR brojac in 3..9 LOOP
DBMS_OUTPUT.put_line('i: ' || brojac);

Outline
PL/SQL Naredbe

END LOOP; END;

2002 Prentice Hall.


All rights reserved.

33

--Primjer while naredbe


brojac NUMBER :=3; BEGIN WHILE brojac < 10 LOOP
DBMS_OUTPUT.put_line('i: ' || brojac); brojac:=brojac +1;

Outline
PL/SQL Naredbe

END LOOP; END;

2002 Prentice Hall.


All rights reserved.

34

--Primjer ugnjedenih petlji


o_counter NUMBER := 1; i_counter NUMBER := 1; BEGIN <<outer_loop>> LOOP EXIT WHEN o_counter > 2; o_counter := o_counter + 1; <<inner_loop>> LOOP EXIT WHEN i_counter > 3; EXIT outer_loop WHEN i_counter > 2; i_counter := i_counter + 1; DBMS_OUTPUT.put_line('i: ' || i_counter || ' j: ' || o_counter); END LOOP inner_loop; END LOOP outer_loop; END;

Outline
PL/SQL Naredbe

i: 2 j: 2 i: 3 j: 2
2002 Prentice Hall.
All rights reserved.

35

Upotreba promjenljivih tipa zapisa Sintaksa:

TYPE ime_tipa IS RECORD (deklaracija_polja (, deklaracija_polja)*); ime_varijable tip; Gdje je deklaracija_polja ime_polja (tip_podatka | tabela.kolona%TYPE)

2002 Prentice Hall. All rights reserved.

36

--Primjer deklaracije zapisa


TYPE odjeljenje_rec_type1 IS RECORD( o_id NUMBER, naziv varchar2(20)
);

Outline
PL/SQL Naredbe

odjeljenje_rec1 odjeljenje_rec_type; TYPE odjeljenje_rec_type2 IS RECORD( o_id odjeljenje.o_id%TYPE, naziv varchar2(20) );

2002 Prentice Hall.


All rights reserved.

37

Upotreba promjenljivih tipa zapisa Jednostavniji nain deklaracije varijable tipa zapisa:

odjeljenje_rec odjeljenje%ROWTYPE;

2002 Prentice Hall. All rights reserved.

38

--Upotreba zapisa
TYPE odjeljenje_rec_type IS RECORD( o_id NUMBER, naziv varchar2(20) ); odjeljenje_rec1 odjeljenje_rec_type; odjeljenje_rec2 odjeljenje%ROWTYPE; BEGIN --Ovo je komentar select * into odjeljenje_rec1 from odjeljenje where o_id = 1; select * into odjeljenje_rec2 from odjeljenje where o_id = 2;

Outline
PL/SQL Naredbe

dbms_output.put_line('ime prvog odjeljenja je :' || odjeljenje_rec1.naziv); dbms_output.put_line('ime drugog odjeljenja je :' || odjeljenje_rec2.naziv); END; /
2002 Prentice Hall.
All rights reserved.

39

Eksplicitni kursori Manipulacija eksplicitnim kursorima

2002 Prentice Hall. All rights reserved.

40

Eksplicitni kursori

itanje podataka putem kursora

2002 Prentice Hall. All rights reserved.

41

Eksplicitni kursori Deklaracija kursora

CURSOR ime IS SELECT naredba


Ne upotrebljava se kljuna rije into

2002 Prentice Hall. All rights reserved.

42

--Upotreba kursora
CURSOR zap_cursor IS SELECT * FROM zaposleni;

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

43

Rad sa kursorom Otvaranje

OPEN ime_kursora
Pristupanje zapisima u kursoru FETCH ime_kursora INTO var,var...| zapis Zatvaranje kursora

CLOSE ime_kursora

2002 Prentice Hall. All rights reserved.

44

Ekplicitni kursori Putem atributa kursora moze se doi do informacija li je kursor prazan itd. %ISOPEN
Vraa TRUE ako je kursor otvoren

%NOTFOUND
Vraa TRUE ako posljednji FETCH nije vratio podatke

%FOUND
Vraa TRUE ako posljednji FETCH je vratio podatke

%ROWCOUNT
Vraa broj torki koje su uitane do sada

2002 Prentice Hall. All rights reserved.

45

--Upotreba ekplicitnih kursora


CURSOR zap_cursor IS SELECT * FROM zaposleni; zap_rec zaposleni%ROWTYPE; BEGIN IF zap_cursor%ISOPEN THEN dbms_output.put_line('Kursor je otvoren '); ELSE dbms_output.put_line('Kursor je zatvoren '); END IF; OPEN zap_cursor;

Outline
PL/SQL Naredbe

IF zap_cursor%ISOPEN THEN dbms_output.put_line('Kursor je otvoren '); ELSE dbms_output.put_line('Kursor je zatvoren '); END IF; OPEN zap_cursor; LOOP FETCH zap_cursor INTO zap_rec; EXIT WHEN zap_cursor%NOTFOUND; dbms_output.put_line('Zaposleni' || zap_cursor%ROWCOUNT || '.' || zap_rec.ime || ' ' || zap_rec.jmbg); END LOOP; END; / 2002 Prentice Hall.
All rights reserved.

46

Kursor i FOR naredba Sintaksa

FOR ime_zapisa IN ime_kursora statement_list; END LOOP;

2002 Prentice Hall. All rights reserved.

47

--Upotreba ekplicitnih kursora


CREATE OR REPLACE PROCEDURE StampajZaposlene2 IS CURSOR zap_cursor IS SELECT * FROM zaposleni; BEGIN FOR zap_rec IN zap_cursor LOOP dbms_output.put_line('Zaposleni' || zap_cursor%ROWCOUNT || '.' || zap_rec.ime || ' ' || zap_rec.jmbg); END LOOP; END; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

48

--Upotreba ekplicitnih kursora


temp NUMBER DEFAULT 1; BEGIN FOR zap_rec IN (SELECT * FROM zaposleni) LOOP dbms_output.put_line('Zaposleni ' || temp || '.' || zap_rec.ime || ' ' || zap_rec.jmbg); temp := temp + 1; END LOOP;

Outline
PL/SQL Naredbe

END; /

2002 Prentice Hall.


All rights reserved.

49

Kursori sa parametrima Mogue je definisati i parametrizovane kursore Sintaksa CURSOR ime (ime parametra tip_parametra, ...) IS SELECT naredba

2002 Prentice Hall. All rights reserved.

50

--Upotreba ekplicitnih kursora


CURSOR zap_cursor (v_oid NUMBER) IS SELECT * FROM zaposleni where o_id = v_oid; zap_rec zaposleni%ROWTYPE; BEGIN OPEN zap_cursor(&v_id); LOOP FETCH zap_cursor INTO zap_rec; EXIT WHEN zap_cursor%NOTFOUND; dbms_output.put_line('Zaposleni' || zap_cursor%ROWCOUNT || '.' || zap_rec.ime || ' ' || zap_rec.jmbg); END LOOP; END; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

51

Procedure Imenovani PL/SQL blokovi naredbi Sintaksa za kreiranje procedura CREATE [OR REPLACE] PROCEDURE ime_procedure (ime_parametra [par_mod] tip_podatka, ime_parametra [par_mod] tip_podatka, ) IS PL/SQL naredbe END ime_procedure;
2002 Prentice Hall. All rights reserved.

52

Parametri poziva procedure Parametar definie vrijednost koja e biti predata proceduri pri njenog izvravanja Postoje tri modela predaje parametara proceduri
IN OUT INOUT

2002 Prentice Hall. All rights reserved.

53

Modeli predaje parametara prilikom poziva procedure IN parametri


Ovo je podrazumijevani model predaje parametara Predstavljaju vrijednost koja je predata proceduri Nije ih mogue mijenjati u okviru tijela procedure Ponaa se kao konstanta Pri pozivu mogue je predati litaral, izraz, konstantu ili inicijalizovanu varijablu

2002 Prentice Hall. All rights reserved.

54

Modeli predaje parametara prilikom poziva procedure OUT parametri


Moraju biti inicijalizovani Slue za vraanje informacija okruenju koje je pozvalo proceduru Mora se predati varijabli i nije bitno da li je inicijalizovana ili ne

IN OUT parametri
Moraju biti specificirani Predaju se programu ali se i vrau vrijednost okruenju koje je pozvalo proceduru Mora se predati varijabla i ona mora biti inicijalizovana

2002 Prentice Hall. All rights reserved.

55

--Procedura koja uveava platu zaposlenim


create or replace procedure uvecaj_platu (p_id in zaposleni.z_id%TYPE) as begin update zaposleni set plata = plata + 0.1 * plata where z_id = p_id; end uvecaj_platu; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

56

--za zadato p_oid vraca naziv odjeljenja u promjenljivu p_ime


create or replace procedure ime_odjeljenja (p_oid in odjeljenje.o_id%TYPE, p_ime OUT odjeljenje.naziv%TYPE) as begin select naziv into p_ime from odjeljenje where o_id = p_oid; end; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

57

--Procedura koja vrsi formatiranje datuma


create or replace procedure formatiraj_datum (p_datum IN OUT varchar2) as begin p_datum := SUBSTR(p_datum, 1, 2) || '-' || SUBSTR(p_datum, 4, 2) || '-' || SUBSTR(p_datum, 7, 4); end; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

58

Procedure Mogue je vriti proizvoljno ugnjedavanje procedura, tj. mogue je pozvati jednu proceduru iz tijela druge.

2002 Prentice Hall. All rights reserved.

59

--Procedura koja uveava platu zaposlenim


CREATE OR REPLACE PROCEDURE uvecaj_platu_svima (p_oid IN odjeljenje.o_id%TYPE) AS CURSOR zap_cursor (c_oid NUMBER) IS (SELECT * FROM zaposleni WHERE o_id=c_oid); zap_rec zaposleni%ROWTYPE; BEGIN OPEN zap_cursor(p_oid); LOOP FETCH zap_cursor INTO zap_rec; EXIT WHEN zap_cursor%NOTFOUND; uvecaj_platu(zap_rec.z_id); END LOOP; COMMIT: END; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

60

Kreiranje sekvence Primjer:

CREATE SEQUENCE odj_seq;


Inkrementiranje vrijednosit sekvence

SELECT odj_seq.NEXTVAL FROM SYS.DUAL

2002 Prentice Hall. All rights reserved.

61

--Procedura za unos novog odjeljenja


create or replace procedure unesi_odjeljenje (p_oid in odjeljenje.naziv%TYPE) as begin insert into odjeljenje values(odj_seq.nextval, p_oid); end; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

62

Funkcije Kreiranje funkcija Sintaksa CREATE [OR REPLACE] FUNCTION ime_funkcije (ime_parametra [par_mod] tip_podatka, ime_parametra [par_mod] tip_podatka, ) RETURN tip_podatka IS PL/SQL naredbe END ime_funkcije;
2002 Prentice Hall. All rights reserved.

63

Funkcije Parametri se definiu i predaju isto kao kod procedura Razlika je u tome to funkcija vraa vrijednost

2002 Prentice Hall. All rights reserved.

64

--Funkcija koja vraa prosjenu platu


create or replace function prosjecna_plata (p_oid in odjeljenje.o_id%TYPE) return number is prosjek number; begin select avg(plata) into prosjek from zaposleni where o_id = p_oid; return prosjek; end; /

Outline
PL/SQL Naredbe

2002 Prentice Hall.


All rights reserved.

65

Funkcije Ogranienja poziva funkcija koje su dio neke SQL naredbe


Funckija mora da uzima na IN parametre Mora da bude stored Uzima samo validne SQL tipove podataka, ne PLSQL Vraa samo validne SQL tipove podataka Ne smije da sadri DML reenice Funkcije pozvane iz UPDATE/DELETE naredbe nad tabelom T ne smiju da sadre DML reenice nad tabelom T Ne smiju da sadre naredbe koje zavravaju transakciju

2002 Prentice Hall. All rights reserved.

66

Upravljanje potprogramima Dodjeljivanje privilegija

CREATE ALTER DROP EXECUTE Primjer

(ANY) PROCEDURE (ANY) PROCEDURE (ANY) PROCEDURE (ANY) PROCEDURE

GRANT EXECUTE ON uvecaj_platu TO STUDENT


2002 Prentice Hall. All rights reserved.

67

Upravljanje potprogramima Spisak funkcija i procedura, itd. nalazi se u metatabeli koja se naziva USER_OBJECTS
OBJECT NAME
Ime objekta

OBJECT_ID
Interni identifikator objekta

OBJECT_TYPE
Tip objekta, npr. TABLE, PROCEDURE itd.

2002 Prentice Hall. All rights reserved.

68

Upravljanje potprogramima Izlistavanje svih procedura i funkcija

SELECT object_name,object_type FROM user_objects WHERE object_type IN ('PROCEDURE','FUNCTION');

2002 Prentice Hall. All rights reserved.

69

Upravljanje potprogramima Izvorni kod procedura i funkcija uva se u metatabeli USER_SOURCE


NAME
Ime objekta

TYPE
Tip objekta, npr. FUNCTION

LINE
Linija

TEXT

2002 Prentice Hall. All rights reserved.

70

Upravljanje potprogramima Dobijanje informacija o izvornom kodu neke procedure SELECT text FROM user_source WHERE name = 'uvecaj_platu'

2002 Prentice Hall. All rights reserved.

71

Upravljanje potprogramima Greke prilikom kompilacije uvaju se u tabeli USER_ERRORS


NAME
Ime objekta

TYPE
Tip objekta

SEQUENCE
Redni broj greke

LINE
Linija na kojoj je dolo do greke

POSITION
Pozicija u liniji na kojoj je dolo do greke

TEXT
Tekst poruke greke
2002 Prentice Hall. All rights reserved.

72

Upravljanje potprogramima Dobijanje informacija eventualnim grekama

SELECT line, text FROM user_errors WHERE name = 'uvecaj_platu' SHOW ERRORS PROCEDURE uvecaj_platu

2002 Prentice Hall. All rights reserved.

73

Upravljanje potprogramima Unitavanje procedura i funkcija

DROP PROCEDURE 'uvecaj_platu'

2002 Prentice Hall. All rights reserved.

74

--Dodjeljivanje privilegija
declare l_plsql_body varchar2(1000) ; begin if '&CONNECT' in ('Y','y') then l_plsql_body := 'grant create view to &USER' execute immediate l_plsql_body; dbms_output.put_line(' Alter session granted '); end if; end; /

Outline
PL/SQL Naredbe

>select granted_role from user_role_privs;


2002 Prentice Hall.
All rights reserved.

You might also like