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

Вниз

Процедуры в IB (Firebid 1.0.0.2)   Найти похожие ветки 

 
YuRock ©   (2004-03-26 13:06) [0]

Уважаемые мастера! Прошу прощенья за скорее всего простой вопрос, но все же...

Я хочу получить в результате выполнения процедуры таблицу, а у меня не получается. Если можно - пошлите на ссылку полезную :), или просто подскажите, как сделать.

Я делаю примерно так (есть ошибки, которые я и прошу Вас помочь мне исправить):

RECREATE PROCEDURE GET_LOST_CHECKNUMBERS(
 TERMINAL_ID SMALLINT,
 SHIFT_FROM INTEGER,
 SHIFT_TO INTEGER,

) AS

BEGIN

 SELECT * FROM LOST_CHECKNUMBERS
 WHERE TERMINAL_ID = :TERMINAL_ID
       AND SHIFT_ID >= :SHIFT_FROM
       AND SHIFT_ID <= :SHIFT_TO;

END


Затем хочу вызвать примерно так (возможно, тоже не правильно):

EXECUTE PROCEDURE GET_LOST_CHECKNUMBERS 4004, 98, 98


Спасибо.


 
Johnmen ©   (2004-03-26 13:09) [1]

FOR SELECT ... INTO ... DO SUSPEND;
И про выходные параметры не забыть.
Всё это есть в стандартной документации.


 
Карелин Артем ©   (2004-03-26 13:09) [2]

И вместо звезды явно перечисляй поля.


 
YuRock ©   (2004-03-26 13:10) [3]

Да. Прошу не обращать внимания на запятую после 4-й строки (на самом деле ее нет).

А ошибка в конце SELECT"а - на ";" ругается.


 
Digitman ©   (2004-03-26 13:11) [4]


> хочу получить в результате выполнения процедуры таблицу,
> а у меня не получается


и не получится, потому что это невозможно
но возможно получить набор данных (НД) с открытым курсором в нем

см. [1]


 
YuRock ©   (2004-03-26 13:12) [5]

Не успел вопрос задать - уже ответили!

Большое спасибо!


 
Карелин Артем ©   (2004-03-26 13:14) [6]

После INTO перечисляй выходные параметры. Перед каждым двоеточие. Для такой процедуры Suspend не нужен. Еще желательно ограничить Select условием first(1), потому как в таком случае возвращается 1 запись максимум.


 
Johnmen ©   (2004-03-26 13:18) [7]

>Карелин Артем ©   (26.03.04 13:14) [6]
>Для такой процедуры Suspend не нужен.

Почему же ?


 
Карелин Артем ©   (2004-03-26 13:36) [8]

Johnmen ©   (26.03.04 13:18) [7]
Потому что
Затем хочу вызвать примерно так (возможно, тоже не правильно):

EXECUTE PROCEDURE GET_LOST_CHECKNUMBERS 4004, 98, 98


 
Карелин Артем ©   (2004-03-26 13:39) [9]

Надо автору вызывать через select, тогда никаких First не надо, а suspend надо


 
Johnmen ©   (2004-03-26 13:43) [10]

>Карелин Артем ©
>Потому что
>...

Что надо автору - неясно. Но с большей вероятность я предположил, что получить НД.


 
YuRock ©   (2004-03-26 13:49) [11]

> Johnmen ©   (26.03.04 13:43) [10]
> Карелин Артем

Мне как-раз через select и надо. Не надо спорить. Я просто раньше никогда не работал так - потому и вопрос задал некорректно.


 
Digitman ©   (2004-03-26 14:29) [12]


> YuRock ©   (26.03.04 13:49) [11]



> Мне как-раз через select и надо


чего городишь-то ? ты же сам ЯВНО указал требуемый тебе метод использования

EXECUTE PROCEDURE GET_LOST_CHECKNUMBERS 4004, 98, 98

никаким "через select" здесь не пахнет, и это означает, что НД тебе не нужен

а если бы нужен был, то вызов проц-ры выглядел бы совсем иначе

SELECT * FROM GET_LOST_CHECKNUMBERS(4004, 98, 98)

вот при таком  раскладе в теле процедуры и нужны будут и INTO и SUSPEND


 
Digitman ©   (2004-03-26 14:35) [13]


> YuRock


тебе сейчас следует понять главное : есть процедуры, которые ничего не возвращают (1), которые возвращают просто некие значения (2) и которые возвращают НД (при этом открывают курсор управления этим НД для использования на кл.стороне) (3)

в случае (2) SUSPEND не нужен, в случае (3) - обязателен
в случае (2) обращение к процедуре осуществляется по EXECUTE PROCEDURE, в случае (3) - по SELECT..FROM ИМЯ_ПРОЦЕДУРЫ


 
YuRock ©   (2004-03-26 16:47) [14]

> Digitman

Спасибо. Я уже со всем давно разобрался. Просто до утра сегодняшнего дня мне не приходилось сталкиваться с конструкцией типа SELECT..FROM ИМЯ_ПРОЦЕДУРЫ, по-этому и в теме я неверно написал вызов. Извините.



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

Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
3-1080139064
Виктор
2004-03-24 17:37
2004.04.25
Как в dxDBGrid-е вывалить програмно ExtLookupColumn


14-1080594690
Andy BitOff
2004-03-30 01:11
2004.04.25
Asm --> Delphi


3-1080567190
venus
2004-03-29 17:33
2004.04.25
Чтение данных из файла в IB-базу :)


1-1081497806
Vlad1
2004-04-09 12:03
2004.04.25
Проблемы с Delphi 8. WinXP


3-1080293016
russko
2004-03-26 12:23
2004.04.25
Нехватка памяти при вызове БД





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