8-Topshiriq. Pl / sql dinamik sql mavzusida amaliy mashg’ulotlar topshiriqlari 8-14-misolda mahalliy dinamik sql-dan dbms sql paketiga o'tish uchun dbms sql. To cursor number funktsiyasidan foydalaniladi


Download 465.83 Kb.
Sana05.01.2022
Hajmi465.83 Kb.
#229277

8-Topshiriq. PL / SQL dinamik SQL mavzusida amaliy mashg’ulotlar topshiriqlari

8-14-misolda mahalliy dinamik SQL-dan DBMS_SQL paketiga o'tish uchun DBMS_SQL.TO_CURSOR_NUMBER funktsiyasidan foydalaniladi.



CREATE OR REPLACE PROCEDURE do_query_2 (

sql_stmt VARCHAR2

) AUTHID DEFINER

IS

TYPE curtype IS REF CURSOR;

src_cur curtype;

curid NUMBER;

desctab DBMS_SQL.DESC_TAB;

colcnt NUMBER;

namevar VARCHAR2(50);

numvar NUMBER;

datevar DATE;

empno NUMBER := 100;

BEGIN

-- sql_stmt := SELECT ... FROM employees WHERE employee_id = :b1';
-- REF CURSOR o'zgaruvchisini oching:

OPEN src_cur FOR sql_stmt USING empno;
-- Dinamik SQL-dan DBMS_SQL paketiga o'ting::

curid := DBMS_SQL.TO_CURSOR_NUMBER(src_cur);

DBMS_SQL.DESCRIBE_COLUMNS(curid, colcnt, desctab);
-- Ustunlarni aniqlang:

FOR i IN 1 .. colcnt LOOP

IF desctab(i).col_type = 2 THEN

DBMS_SQL.DEFINE_COLUMN(curid, i, numvar);

ELSIF desctab(i).col_type = 12 THEN

DBMS_SQL.DEFINE_COLUMN(curid, i, datevar);

-- ifodalar

ELSE

END IF;

END LOOP;
-- DBMS_SQL to'plami bilan qatorlarni oling:

WHILE DBMS_SQL.FETCH_ROWS(curid) > 0 LOOP

FOR i IN 1 .. colcnt LOOP

IF (desctab(i).col_type = 1) THEN

DBMS_SQL.COLUMN_VALUE(curid, i, namevar);

ELSIF (desctab(i).col_type = 2) THEN

DBMS_SQL.COLUMN_VALUE(curid, i, numvar);

ELSIF (desctab(i).col_type = 12) THEN

DBMS_SQL.COLUMN_VALUE(curid, i, datevar);

-- ifodalar

END IF;

END LOOP;

END LOOP;
DBMS_SQL.CLOSE_CURSOR(curid);

END;

/

8-14-misol. Dinamik SQL-dan DBMS_SQL paketiga o'tish quyidagicha prodsedura yaratish orqali amalga oshiriladi :





8.15-misol.SQL inyeksiyasi namunalarini o’ratish.



SQL in'ektsiyasi SQL bayonotlarida mijoz tomonidan berilgan ma'lumotlardan foydalanadigan dasturlardan zararli ravishda foydalanadi va shu bilan cheklangan ma'lumotlarni ko'rish yoki boshqarish uchun ma'lumotlar bazasiga ruxsatsiz kirishni oladi.

Misol 8-16 protsedurasi bayonotni o'zgartirish uchun zaifdir



Ushbu misol bayonotlarni modifikatsiyalashga zaif bo'lgan protsedurani yaratadi va keyinchalik ushbu protsedurani bayonotlarni o'zgartirish bilan va ularsiz ishlatadi. Bayonotni o'zgartirish bilan protsedura maxfiy yozuvni qaytaradi.

Zaif protsedura yaratish:
Download 465.83 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling