Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранимые процедуры [D5, IB5.x]


Talla2k ©   (2003-11-18 16:27:00) 

А можно ли в хранимой процедере вызвать еще одну хранимую процедуру???

Для ОБРАЗЦА(упроченная)
set term ^;
create procedure nozero(pl char(5),nu char(8))
returns (num1 char(8))
as
begin
select num1 from get_num(:pl,:nu);
end^
set term;^

Где get_num также хранимая процедура

Вроде правильно создал,а всегда получаю
Dynamic SQL Error
SQL error code = -104
Token unknown - line 5, char 32
;


Johnmen   (2003-11-21 11:15:00) [1]

>например, записью может быть совокупность имени и номера телефона.

То есть, если процедура возвращает совокупность двух значений, имя и номер телефона, то это запись.
Если процедура возвратит набор таких совокупностей, то значит возвращен НД.


aVast   (2003-11-21 11:06:00) [2]

Запись - это набор полей, относящихся к одному объекту, например, записью может быть совокупность имени и номера телефона.
Набор данных - это некоторый набор записей, выбранных из базы по какому-то признаку.


Johnmen   (2003-11-21 10:53:00) [3]

>aVast © (21.11.03 10:45)

А что такое запись ? И что такое набор данных ?
В твоем понимании.


aVast   (2003-11-21 10:45:00) [4]

народ у вас проблема с терминалогией. то что вам возвращается это не записи, это значения переменных, полученные процедурой.


Johnmen   (2003-11-21 10:33:00) [5]

И у меня глюк. И у меня возвращают...:)


stud   (2003-11-21 10:32:00) [6]


select sum(gnr) from isp_report(0,:KOD_VR,:D1,:D2) into :sum_gnr;


> aVast © (21.11.03 10:19) [8]

вот реальный пример, который нормально у меня работает


Zacho   (2003-11-21 10:31:00) [7]


> aVast © (21.11.03 10:19) [8]
>
> процедура не может возвращать записи :)

А я и не знал. Наверное, поэтому у меня процедуры прекрасно возвращают наборы данных. :-)
RTFM suspend, for select, select и т.п.


aVast   (2003-11-21 10:31:00) [8]

to Johnmen © (21.11.03 10:25)
ну да


Johnmen   (2003-11-21 10:25:00) [9]

>aVast © (21.11.03 10:19)
>процедура не может возвращать записи :)

Да ну ?
:)


aVast   (2003-11-21 10:19:00) [10]

to Zacho © (19.11.03 11:40)
>Это для случая, когда процедура возвращает только одну запись или не возвращает ничего вообще.

процедура не может возвращать записи :)
а для случаев, когда процедура возвращает насколько значений синтаксис сооответственно:
execute procedure get_num(:pl,:nu)
returning_values (:num1, :num2, :num3);


Zacho   (2003-11-19 11:40:00) [11]


> aVast © (19.11.03 11:31) [5]

Это для случая, когда процедура возвращает только одну запись или не возвращает ничего вообще.
P.S. А зачем привел SQL form и примеры для Embedded SQL ? Вряд ли автор вопроса использует gpre


aVast   (2003-11-19 11:35:00) [12]

то есть в твоем случае:
set term ^;
create procedure nozero(pl char(5),nu char(8))
returns (num1 char(8))
as
begin
execute procedure get_num(:pl,:nu)
returning_values (:num1);
end^
set term;^


aVast   (2003-11-19 11:31:00) [13]

ваабще для вызова процедур используется
EXECUTE PROCEDURE [TRANSACTION transaction]
name [:param [[INDICATOR]:indicator]]
[, :param [[INDICATOR]:indicator] …]
[RETURNING_VALUES :param [[INDICATOR]:indicator]
[, :param [[INDICATOR]:indicator] …]];

DSQL form:

EXECUTE PROCEDURE name [param [, param …]]
[RETURNING_VALUES param [, param …]]

пример:

EXECUTE PROCEDURE DEPT_BUDGET 100 RETURNING_VALUES :sumb;

EXECUTE PROCEDURE DEPT_BUDGET :rdno RETURNING_VALUES :sumb;


stud   (2003-11-19 09:26:00) [14]

внимательней читать нужно))))


Rad   (2003-11-19 05:51:00) [15]

Да, можно. И незачем так кричать :)
RTFM INTO


Talla2k   (2003-11-18 23:32:00) [16]

Ну да именно так и было!!!Это ж я так для примера!!!
Самое главное ЭТО МОЖНО ЛИ ИЗ ХРАНИМОЙ ВЫЗВАТЬ ХРАНИМУЮ???


stud   (2003-11-18 16:29:00) [17]

можно
select num1 from get_num(:pl,:nu) into ...;


Наверх

Титульная страница Поиск, карта сайта Написать письмо