|
Вопрос знатокам PL/SQL, как преобращовать курсор из DBMS_SQL в "обычный"
|
|||
---|---|---|---|
#18+
Добрый день. Можно ли переписать с помощью динамического SQL следующую функцию: TYPE cr_type IS REF CURSOR; function GET_ALL_USER_ROLES(dblink VARCHAR2) return cr_type is cv cr_type; begin -- Вот здесь предполагается использование DBMS_SQL, т.к., будет меняться dblink -- т.е. потребуется что-то типа ... from ROLE_ROLE_PRIVS@'||dblink open cv for select granted_role from ROLE_ROLE_PRIVS UNION select granted_role from USER_ROLE_PRIVS; return cv; -- КАК вернуть курсор при использовании DBMS_SQL? -- Причем предполагается (в зависимости от переданного значения)использовать либо --dynamic SQL либо обычный, поэтому возврат указателя на курсор из DBMS_SQL не подходит -- (ввиду частого вызова функции, очень бы не хотелось всегда использовать DBMS_SQL как более тормозной); end; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2001, 12:37 |
|
Вопрос знатокам PL/SQL, как преобращовать курсор из DBMS_SQL в "обычный"
|
|||
---|---|---|---|
#18+
Для 8-ки: OPEN {cursor_variable | :host_cursor_variable} FOR dynamic_string [USING bind_argument[, bind_argument]...]; пример из руководства DECLARE TYPE EmpCurTyp IS REF CURSOR; -- define weak REF CURSOR type emp_cv EmpCurTyp; -- declare cursor variable my_ename VARCHAR2(15); my_sal NUMBER := 1000; BEGIN OPEN emp_cv FOR -- open cursor variable 'SELECT ename, sal FROM emp WHERE sal > :s' USING my_sal; ... END; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2002, 15:12 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1993455]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 247ms |
total: | 381ms |
0 / 0 |