1 / 21

ORACLE ORDBMS

ORACLE ORDBMS. adminisztrációs feladatok 6. rész. 2004. dr. Kovács László. PL/SQL. név típus := kezdőérték név CONSTANT típus := érték név t.m%TYPE név t%ROWTYPE TYPE tip IS TABLE OF tipus TYPE tip IS RECORD(.. ). Blokk felépítés. DECLARE BEGIN EXCEPTION END. :=

quanda
Télécharger la présentation

ORACLE ORDBMS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ORACLE ORDBMS adminisztrációs feladatok 6. rész 2004 dr. Kovács László

  2. PL/SQL név típus := kezdőérték név CONSTANT típus := érték név t.m%TYPE név t%ROWTYPE TYPE tip IS TABLE OF tipus TYPE tip IS RECORD(.. ) Blokk felépítés DECLARE BEGIN EXCEPTION END := IF .. THEN .. ELSE .. END IF WHILE .. LOOP .. END LOOP FOR I = .. LOOP … END LOOP EXIT WHEN WHEN .. THEN SQLCODE() SQLERRM()

  3. PL/SQL variable r number; @P1 @p2 print r DECLARE I NUMBER; BEGIN FORJIN 1..5 LOOP :R := J; END LOOP; EXCEPTION WHEN OTHERS THEN :R := -1; END; . / DECLARE TYPETTISRECORD ( kod NUMBER, nev CHAR(20) ); ember TT; BEGIB ember.kod := 3; ember.nev := 'Peter'; END;

  4. PL/SQL variable r number; execute :r := pp1(1); print r CREATE FUNCTION PP1(P NUMBER) RETURN CHAR AS TYPE FT IS TABLE OF CHAR(10); FTABLA FT := FT(' ',' ',' ',' ',' ',' '); BEGIN FTABLA(3) := 'ALMA'; FTABLA(5) := 'SZILVA'; FTABLA(6) := 'EPER'; RETURN FTABLA(P); END; . /

  5. PL/SQL Adatbázis adatok kezelése SELECT .. INTO valt FROM .. DECLARE CURSOR cnev(..) IS SELECT .. OPEN cnev(..) FETCH cnev INTO … CLOSE cnev FOR valt IN cnev LOOP … END LOOP UPDATE .. SET …WHERE … DELETE FROM … WHERE …

  6. CREATE FUNCTION P (D NUMBER) RETURN NUMBER IS CURSOR E_cursor IS SELECT fizetes, jutalom FROM dolg WHERE kod = D; ossz_fiz NUMBER(11, 2) := 0; db NUMBER(10) := 1; BEGIN FOR dolgozo IN E_cursor LOOP dolgozo.jutalom := NVL(dolgozo.jutalom, 0); ossz_fiz := ossz_fiz + dolgozo.fizetes + dolgozo.jutalom; db := db + 1; END LOOP; RETURN ossz_fiz/db; EXCEPTION WHEN OTHERS THEN RETURN –1; END P;

  7. PL/SQL Hibakezelés WHEN kod THEN WHEN OTHERS THEN DECLARE hh EXCEPTION RAISE hh WHEN hh THEN NO_DATA_FOUND VALUE_ERROR STORAGE_ERROR PROGRAM_ERROR ZERO_DIVIDE minta hibára

  8. PL/SQL Beéptett függvények matematikai függvények ABS POWER CEIL ROUND COS SIGN COSH SIN EXP SINH FLOOR SQRT LN TAN LOG TRUNC MOD karakter kezelő függvények ASCII CHR CONCAT INITCAP INSTR LENGTH LOWER LPAD LTRIM REPLACE RPAD RTRIM SUBSTR TRANSLATE UPPER konverziós függvények CONVERT TO_CHAR TO_DATE TO_NUMBER NVL DECODE dátum függvények SYSDATE ROUND ADD_MONTH

  9. minta

  10. Csomag (package) Logikailag összetartozó tárolt eljárások, függvények és változók együttese   Egységként töltődik be a memóriába Egyidejűleg többen is használhatják A csomagok LRU stratégiával tárolódnak Package szerkezete: -         definiciós rész (interface megadása) -         törzs rész (elemek részletes leírása) Private elemek: olyan eleme, mely csak a törzs részben szerepel, a definíciós részben nem Public elemek: szerepel a definíciós, interface részben Package létrehozása: 1.      definíciós rész megadása 2.      törzs megadása

  11. Kezelő parancsok: CREATE PACKAGE csnev AS PL-SQL definíciók END csnev CREATE PACKAGE BODY csnev AS PL/SQL törzs END csnev DROP PACKAGE csnev hivatkozás csomag.tag csomag.tag(..)

  12. CREATE PACKAGE proba AS FUNCTION f1 (a IN CHAR) RETURN NUMBER; PROCEDURE p1 (a IN NUMBER, b OUT NUMBER) END proba; CREATE PACKAGE BODY proba AS FUNCTION f1 (a IN CHAR) RETURN NUMBER AS BEGIN RETURN a + 1; END; PROCEDURE p1 (a IN NUMBER, b OUT NUMBER) BEGIN …. END; END proba;

  13. Fontosabb beépített csomagok -         DBMS_ALERT események, riasztások kezelése -         DBMS_DDL DDL funkciók meghívása -         DBMS_DEBUG debug kezelő -         DBMS_IOT láncolt rekordok lekérdezése -         DBMS_JOB munkaköteg kezelő rutinok -         DBMS_LOB LOB kezelő rutinok -         DBMS_LOCK zárolás kezelés -         DBMS_LOGMNR napló kelezés -         DBMS_OLAP OLAP funkció kezelés -         DBMS_OUTPUT üzenet bufferelés, kiírás -         DBMS_PIPE pipe kezelő -         DBMS_RANDOM véletlen szám generátor

  14. Fontosabb beépített csomagok DBMS_RESOURCE_MANAGER erőforrás, QEP kezelő DBMS_ROWID ROWID kezelő -         DBMS_SESSION bejelentkezések kezelése -         DBMS_SNAPSHOT snapshot kezelő -         DBMS_SPACE segment kezelő -         DBMS_SQL dinamikus SQL -         DBMS_TRACE PL/SQL trace kezelő -         DBMS_UTILITY segéd rutinok -         UTL_FILE állomány kezelő rutinok -         UTL_HTTP http hívások kezelése -         UTL_SMTP levél küldés kezelése -         UTL_TCP alap TCP szolgáltatások köre

  15. JOB kezelő csomag DBMS_JOB SUBMIT Procedure új munkaköteg létrehozása REMOVE Procedure munkaköteg megszüntetése CHANGE Procedure munkaköteg paraméterek változtatása NEXT_DATE Procedure következő futtatási időpont beállítása INTERVAL Procedure futtatások közötti időpont beállítása BROKEN Procedure munkaköteg letiltása RUN Procedure munkaköteg futtatása BEGIN DBMS_JOB.SUBMIT(:jobno, ‘PP1(2);' SYSDATE, 'SYSDATE + 1'); commit; END;

  16. Üzenet kiírás DBMS_OUTPUT (PLSQL: SET SERVEROUTPUT ON) ENABLE üzenet kiírás engedélyezés DISABLE üzenet kiírás letiltás PUT_LINE sor kiírása a bufferbe NEW_LINE sor lezására GET_LINE sorok kiolvasása a bufferből sql>SET SERVEROUTPUT ON sql>EXECUTE PP(‘OPEL’); CREATE PROCEDURE PP(X IN CHAR) AS V NUMBER; BEGIN SELECT MAX(AR) INTO V FROM AUTOK WERE TIPUS=X DBMS_OUTPUT.PUT_LINE(‘MAX = ' || TO_CHAR(V)); END;

  17. Állománykezelés megadott könyvtárban kell elhelyezni az állományt init.ora : UTL_FILE_DIR UTL_FILE FOPEN file megnyitása IS_OPEN nyitott-e a file? FCLOSE file lezására FCLOSE_ALL minden file zására GET_LINE egy sor olvasása PUT egy sor kiírása NEW_LINE sorvégjel kiírása PUT_LINE sor kiírás sorvéggel FFLUSH buffer ürítése kiírással FOPEN állomány nyitása

  18. minta

  19. Dinamikus SQL DBMS_SQL OPEN_CURSOR új kurzor nyitása SQL parancshoz PARSE az SQL parancs értelmezése BIND_VARIABLE változó kötése (input) DEFINE_ARRAY fogadó tömb definiálása (output) EXECUTE kurzor futtatása FETCH_ROWS sor beolvasása a kurzorból COLUMN_VALUE beolvasott rekordegy mező értékének lekérdezése CLOSE_CURSOR kurzor lezárás LAST_ROW_COUNT beolvasott sorok száma

  20. CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS cursor_name INTEGER; rows_processed INTEGER; BEGIN cursor_name := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > :x',dbms_sql.native); DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', salary); rows_processed := DBMS_SQL.EXECUTE(cursor_name); DBMS_SQL.CLOSE_CURSOR(cursor_name); EXCEPTION WHEN OTHERS THEN DBMS_SQL.CLOSE_CURSOR(cursor_name); END;

  21. begin c := dbms_sql.open_cursor; dbms_sql.parse(c, 'select n from t order by 1', dbms_sql); dbms_sql.define_array(c, 1, n_tab, 10, indx); d := dbms_sql.execute(c); loop d := dbms_sql.fetch_rows(c); dbms_sql.column_value(c, 1, n_tab); exit when d != 10; end loop; dbms_sql.close_cursor(c); exception when others then if dbms_sql.is_open(c) then dbms_sql.close_cursor(c); end if; end;

More Related