Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Как в процедуре 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 3.387 c
3-1106499569
whitebeast
2005-01-23 19:59
2005.02.20
Файлы *.gdb СОЗДАНИЕ


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


9-1100511944
Xenon
2004-11-15 12:45
2005.02.20
Скролл экрана


4-1104954636
Arnold
2005-01-05 22:50
2005.02.20
Как узнать список файлов в выбранной директории?


14-1107080979
Yuri Btr
2005-01-30 13:29
2005.02.20
Проблема с csrss.exe





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский