Главная страница
    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.46 MB
Время: 0.043 c
14-1106904607
VFV
2005-01-28 12:30
2005.02.20
Загрузка


1-1107862945
AlexTregubov
2005-02-08 14:42
2005.02.20
Как быстро уменьшить bitmap?


9-1100858491
cyborg
2004-11-19 13:01
2005.02.20
Выложил исходник CyborgEngine2D


9-1099337514
Colt1978
2004-11-01 22:31
2005.02.20
Задание пути объекту.... (GLScene)


1-1107843367
hgd
2005-02-08 09:16
2005.02.20
Вопрос про RichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский