Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Как в процедуре Oracle вернуть один из нескольких курсоров?   Найти похожие ветки 

 
Erik1 ©   (2005-01-18 17:35) [0]

Делаю так:
CREATE OR REPLACE PROCEDURE SPL_LEP_KOIK
( sTunnus VARCHAR2
, nKl_ID NUMBER
, nAdr_ID NUMBER
, vCur OUT Stp_Const.tRefCursor)
IS
-- 2005.01.01 erik

  vTunnus teenus.tunnus%TYPE;

  CURSOR cTeenus IS
    SELECT ID, Nimetus, Osakond, 1 Cur
    FROM teenus
 WHERE (tunnus = vTunnus) and tunnus not in ("DEKRENT","LT");
  Teenus_rec cTeenus%ROWTYPE;  
........
 OPEN cTeenus;
 FETCH cTeenus INTO Teenus_rec;
 IF cTeenus%FOUND THEN
   vCur := cTeenus; -- говорит здесь ошибка, а как правильно?
RETURN;  
 END IF;
 
 OPEN cSeade;
 FETCH cSeade INTO Seade_rec;
 IF cSeade%FOUND then
   vCur := cSeade;
RETURN;  
 END IF;


 
forrest   (2005-01-18 18:38) [1]

может такой вариант:

if {условие} then
open vCur for
select ... from...
elsif {условие} then
 open vCur for
select ... from...
end if;


 
Erik1 ©   (2005-01-18 19:41) [2]

Вобщето мне надо проверить непуста ли выборка. Каже тогда сделать сравнение IF vCur%FOUND THEN ? Но будет ли это работать без FETH?


 
forrest   (2005-01-19 10:15) [3]

Я так понимаю, что курсор - это обыкновенный select. Можно воспользоваться функцией Count(*) и проанализировать её значение.
И именно её значение использовать как {условие } для if.


 
Erik1 ©   (2005-01-19 10:48) [4]

Up


 
Erik1 ©   (2005-01-19 10:49) [5]

И на каждое условие по 2 запроса?


 
forrest   (2005-01-25 10:09) [6]

Сначала делаются два запроса на наличие записей в cTeenus и cSeade.  Потом проверяется если в cTeenus есть записи то
open VCur for {select из cTeenus}. Если нет записей, то
open VCur for {select из cSeade}.


 
Mutniy   (2005-01-25 10:12) [7]

ну в MSSQL есть такое

if exists(select * from myTable)
 begin
   ...
 end


 
Reindeer Moss Eater ©   (2005-01-25 10:16) [8]

Ты пытаешься связать ref курсор с явно объявленным курсором.
И нифига у тебя не выйдет.


 
Erik1 ©   (2005-01-25 12:14) [9]

Проблему решил открывая два раза курсор. А что быстрее UNION или мой метод?


 
Reindeer Moss Eater ©   (2005-01-25 12:17) [10]

А проверить?



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
1-1107928317
Gloomer
2005-02-09 08:51
2005.02.20
Ошибка при использовании DLL


1-1107852549
Denis
2005-02-08 11:49
2005.02.20
Как проскроллить RichEdit до выделеного участка текста?


14-1107157517
syte_ser78
2005-01-31 10:45
2005.02.20
KMP в Харькове


14-1107035321
DrPass
2005-01-30 00:48
2005.02.20
Delphi 2005 и буква "я"


1-1107410801
msgipss
2005-02-03 09:06
2005.02.20
использование статического метода