Основы (асослар)


Download 0.95 Mb.
bet32/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   28   29   30   31   32   33   34   35   ...   58
Bog'liq
PL-SQL Маъруза матни

4 мисол


Host ўзгарувчисини масалан SQL*Plus –да VARIABLE командаси орқали эълон қилиш мумкин:
VARIABLE return_code NUMBER

PL/SQL Host ўзгарувчисига мурожаат қилиш учун уни олдига икки нуқта (:) қўйиш лозим:


BEGIN
:return_code := 0;
IF credit_check_ok(acct_no) THEN
:return_code := 1;
END IF;
...
END;

SQL*Plus Host ўзгарувчиси қийматини кўриш учун PRINT командасидан фойдаланинг:


SQL> PRINT return_code

RETURN_CODE


-----------
1

SQL*Plus -даги REFCURSOR берилганлар тури курсор ўзгарувчисини эълон қилишга имкон беради.


CREATE PACKAGE emp_data AS
TYPE EmpRecTyp IS RECORD (
emp_id NUMBER(4),
emp_name CHAR(10),
job_title CHAR(9),
dept_name CHAR(14),
dept_loc CHAR(13));
TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp);
END;
/
CREATE PACKAGE BODY emp_data AS
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp) IS
BEGIN
OPEN emp_cv FOR
SELECT empno, ename, job, dname, loc FROM emp, dept
WHERE emp.deptno = dept_no AND emp.deptno = dept.deptno
ORDER BY empno;
END;
END;
/
COLUMN EMPNO HEADING Number
COLUMN ENAME HEADING Name
COLUMN JOB HEADING JobTitle
COLUMN DNAME HEADING Department
COLUMN LOC HEADING Location
SET AUTOPRINT ON

VARIABLE cv REFCURSOR


EXECUTE emp_data.get_staff(20, :cv)

Курсор атрибутларидан фойдаланиш


Хар бир курсор ёки курсор ўзгарувчиси тўртта атрибутга эга: %FOUND, %ISOPEN %NOTFOUND ва %ROWCOUNT. Ушбу атрибутлар курсор ҳақида фойдали ахборотлар беради.

Ошкор курсор атрибутлари

%FOUND


Курсор ёки курсор ўзгарувчиси очилганда, лекин биринчи қатор олингунга қадар %FOUND атрибут NULL қийматни қайтаради. Сўнг қатор олинса TRUE, қатор тугаса FALSE қийматни қайтаради
LOOP
FETCH c1 INTO my_ename, my_sal, my_hiredate;
IF c1%FOUND THEN -- қатор олинди
...
ELSE -- қатор олиш муваффақиятсиз бўлди
EXIT;
END IF;
END LOOP;


%ISOPEN


%ISOPEN атрибут TRUE қиймат қайтаради, агар курсор ёки курсор ўзгарувчиси очилган бўлса, акс ҳолда %ISOPEN атрибут FALSE қиймат қайтаради.
IF c1%ISOPEN THEN -- курсор очиқ
...
ELSE -- курсор ёпиқ
OPEN c1;
END IF;

Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   58




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