Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизХранимые процедуры Найти похожие ветки
← →
Talla2k (2003-11-18 16:27) [0]А можно ли в хранимой процедере вызвать еще одну хранимую процедуру???
Для ОБРАЗЦА(упроченная)
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
;
← →
stud (2003-11-18 16:29) [1]можно
select num1 from get_num(:pl,:nu) into ...;
← →
Talla2k (2003-11-18 23:32) [2]Ну да именно так и было!!!Это ж я так для примера!!!
Самое главное ЭТО МОЖНО ЛИ ИЗ ХРАНИМОЙ ВЫЗВАТЬ ХРАНИМУЮ???
← →
Rad (2003-11-19 05:51) [3]Да, можно. И незачем так кричать :)
RTFMINTO
← →
stud (2003-11-19 09:26) [4]внимательней читать нужно))))
← →
aVast (2003-11-19 11:31) [5]ваабще для вызова процедур используется
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;
← →
aVast (2003-11-19 11:35) [6]то есть в твоем случае:
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;^
← →
Zacho (2003-11-19 11:40) [7]
> aVast © (19.11.03 11:31) [5]
Это для случая, когда процедура возвращает только одну запись или не возвращает ничего вообще.
P.S. А зачем привел SQL form и примеры для Embedded SQL ? Вряд ли автор вопроса использует gpre
← →
aVast (2003-11-21 10:19) [8]to Zacho © (19.11.03 11:40)
>Это для случая, когда процедура возвращает только одну запись или не возвращает ничего вообще.
процедура не может возвращать записи :)
а для случаев, когда процедура возвращает насколько значений синтаксис сооответственно:
execute procedure get_num(:pl,:nu)
returning_values (:num1, :num2, :num3);
← →
Johnmen (2003-11-21 10:25) [9]>aVast © (21.11.03 10:19)
>процедура не может возвращать записи :)
Да ну ?
:)
← →
aVast (2003-11-21 10:31) [10]to Johnmen © (21.11.03 10:25)
ну да
← →
Zacho (2003-11-21 10:31) [11]
> aVast © (21.11.03 10:19) [8]
>
> процедура не может возвращать записи :)
А я и не знал. Наверное, поэтому у меня процедуры прекрасно возвращают наборы данных. :-)
RTFM suspend, for select, select и т.п.
← →
stud (2003-11-21 10:32) [12]
select sum(gnr) from isp_report(0,:KOD_VR,:D1,:D2) into :sum_gnr;
> aVast © (21.11.03 10:19) [8]
вот реальный пример, который нормально у меня работает
← →
Johnmen (2003-11-21 10:33) [13]И у меня глюк. И у меня возвращают...:)
← →
aVast (2003-11-21 10:45) [14]народ у вас проблема с терминалогией. то что вам возвращается это не записи, это значения переменных, полученные процедурой.
← →
Johnmen (2003-11-21 10:53) [15]>aVast © (21.11.03 10:45)
А что такое запись ? И что такое набор данных ?
В твоем понимании.
← →
aVast (2003-11-21 11:06) [16]Запись - это набор полей, относящихся к одному объекту, например, записью может быть совокупность имени и номера телефона.
Набор данных - это некоторый набор записей, выбранных из базы по какому-то признаку.
← →
Johnmen (2003-11-21 11:15) [17]>например, записью может быть совокупность имени и номера телефона.
То есть, если процедура возвращает совокупность двух значений, имя и номер телефона, то это запись.
Если процедура возвратит набор таких совокупностей, то значит возвращен НД.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c