![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OPEN CUR_OBJS FOR vSQL USING nOBJ_TYPE, nOBJ_TYPE;
Нуб © (2007-03-26 12:34:00)Здрасте. Ув мастера как понимать выражение
OPEN CUR_OBJS FOR vSQL USING nOBJ_TYPE, nOBJ_TYPE;, где CUR_OBJS это REFCURSOR, а vSQL - это варчар типа vSQL VARCHAR2(4000) := '
SELECT OBJ_ID,OBJ_NAME,OBJ_SNAME,OBJ_TYPE FROM OBJS WHERE (:vOBJ_TYPE IS NULL OR OBJ_TYPE = :vOBJ_TYPE)'; непонятно для чего этот USING нужен , ниже приведен полный текст функции PL/SQL
FUNCTION LIST_OBJS_BY_TYPE(cORDER IN VARCHAR2 := NULL,nOBJ_TYPE IN NUMBER := NULL) RETURN REFCURSOR IS
CUR_OBJS REFCURSOR;
vSQL VARCHAR2(4000) := '
SELECT OBJ_ID,OBJ_NAME,OBJ_SNAME,OBJ_TYPE FROM OBJS WHERE (:vOBJ_TYPE IS NULL OR OBJ_TYPE = :vOBJ_TYPE)';
BEGIN
IF cORDER IS NOT NULL THEN
vSQL := vSQL||' ORDER BY '||cORDER;
END IF;
OPEN CUR_OBJS FOR vSQL USING nOBJ_TYPE, nOBJ_TYPE;
RETURN CUR_OBJS;
END LIST_OBJS_BY_TYPE;
Нуб (2007-03-26 13:11:00) [1]
> Desdechado ©
да Оракл, ясно , будем дальше инфу читать
Desdechado (2007-03-26 12:49:00) [2]Видимо, Оракл?
USING дает возможность указать фактические значения параметров, если таковые есть.
Нуб (2007-03-26 12:37:00) [3]что такое cursor и для чего он нужен я понял с примера
CREATE PACKAGE emp_data AS
TYPE GenericCurTyp IS REF CURSOR;
TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE;
PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp,
choice IN NUMBER);
END emp_data;
CREATE PACKAGE BODY emp_data AS
PROCEDURE open_emp_cv (emp_cv IN OUT EmpCurTyp,
choice IN NUMBER) IS
BEGIN
IF choice = 1 THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE comm IS NOT NULL;
ELSIF choice = 2 THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE sal > 2500;
ELSIF choice = 3 THEN
OPEN emp_cv FOR SELECT * FROM emp WHERE deptno = 20;
END IF;
END open_emp_cv;
END emp_data;
а вот USING нафиг надо , как оно ? , для чего ? и почему ?