![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранимые процедуры [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]
Да, можно. И незачем так кричать :)
RTFMINTO
Talla2k (2003-11-18 23:32:00) [16]
Ну да именно так и было!!!Это ж я так для примера!!!
Самое главное ЭТО МОЖНО ЛИ ИЗ ХРАНИМОЙ ВЫЗВАТЬ ХРАНИМУЮ???
stud (2003-11-18 16:29:00) [17]
можно
select num1 from get_num(:pl,:nu) into ...;