Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

Возврат данных из процедуры.   Найти похожие ветки 

 
Z_man7777 ©   (2003-04-10 15:35) [0]

Здравствуйте, Уважаемые Мастера!!!
Я хочу написать хранимую процедуру в InterBase (FireBird-е), которая будет возвращать несколько количество записей. Можно ли такое реализовать? Если можно, то подскажите как или укажите, где можно найти информацию по моей проблеме.
Всем заранее Спасибо!!!


 
Соловьев ©   (2003-04-10 15:40) [1]


...
for
select...
do
begin
...
suspend;
end
...

ibase.ru и doc.get.ru и codenet.ru


 
Z_man7777 ©   (2003-04-10 15:48) [2]

Значит, если я напишу так, как Вы написали, то есть:
for
select * from Table
do
begin
/*здесь мне не понятно что я должен сделать чтобы данные возвратились*/
end
into :k /*если я напишу так, что произойдет?*/


 
Johnmen ©   (2003-04-10 16:01) [3]

Есть примеры :
Пуск->Программы->InterBase->Documentation->Interbase SQL Reference->CREATE PROCEDURE


 
AlexSerp ©   (2003-04-10 16:03) [4]

Вот тебе пример процедуры

CREATE PROCEDURE ARC_DATA (
DATA_ARC DATE)
AS
declare variable n_sf integer;
begin
for
select n
from dok_sf
where opl=2 and data <=:data_arc
into :n_sf
do begin
insert into sbit_arc
select * from sbit where n_sf =:n_sf;
delete from sbit where n_sf =:n_sf;
end
insert into arc_date (data_arc) values (:data_arc);
end


 
AlexSerp ©   (2003-04-10 16:06) [5]

Прошу пардону поторопился.
Та процедура ничего не возвращает.
Вот (правда это не я писал):

CREATE PROCEDURE SNB_TOV (
MES1 INTEGER,
GOD1 INTEGER,
DATA_N DATE,
DATA_NM DATE,
DATA_NM1 DATE,
DATA_K DATE,
NN INTEGER)
RETURNS (
TOV_NP VARCHAR (20),
TOV_NAME VARCHAR (50),
SUMTOV DOUBLE PRECISION,
SUMTOVFULL DOUBLE PRECISION,
SUMTAM DOUBLE PRECISION)
AS
declare variable TOV_N integer;
declare variable dok_N_val integer;
declare variable dok_N_skl integer;
declare variable dok_kurs double precision;
declare variable dok_N_SF integer;
BEGIN
for
select
t.N_P,
t.name,
sum(s.sm_rub),
t.n
from snab s left join tov t on s.n_tov=t.n
where (s.data<=:data_k and s.data>=:data_n and s.n_tam_dec>0 and tip_tov<100 )
group by t.name,t.n,t.N_P
Order by t.name
into
:TOV_NP,
:TOV_NAME,
:SUMTOV,
:TOV_N
do
BEGIN
select
sum(s.sm_rub)
from snab s
where (S.N_TOV=:TOV_N AND s.data<=:data_k and s.data>=:data_n and s.n_tam_dec>0 and tip_tov=100 )
INTO :SUMTAM;
IF (:SUMTAM IS NULL) THEN SUMTAM=0;
SUMTOVFULL=:SUMTOV+:SUMTAM;
IF (ABS(SUMTOV)>0.01) THEN suspend;
END
END


 
Z_man7777 ©   (2003-04-10 16:21) [6]

!AlexSerp!
И что в результате получается (что возвращается)?


 
Соловьев ©   (2003-04-10 16:26) [7]


...
for
select...
into :<то что в returns>
do
begin
...
suspend;/*волшебное слово*/
end
...


 
AlexSerp ©   (2003-04-10 16:27) [8]

Во-первых

RETURNS (
TOV_NP VARCHAR (20),
TOV_NAME VARCHAR (50),
SUMTOV DOUBLE PRECISION,
SUMTOVFULL DOUBLE PRECISION,
SUMTAM DOUBLE PRECISION)


Во-вторых, RTFM.


 
AlexSerp ©   (2003-04-10 16:29) [9]

Извини, дорогой, все-таки вопросы надо задавать когда после прочтения документации и экспериментов ничего не получилось.
А тебе, похоже, даже лень мануал открыть.


 
litr_spirta ©   (2003-04-10 16:29) [10]

Забыли пояснить, что потом надо не execute procedure _ТвояSP_,
а select * from _ТвояSP_


 
Z_man7777 ©   (2003-04-10 16:36) [11]

Все большое спасибо!!!
Вразумили незнайке.



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

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
14-91496
a$modeu$
2003-04-10 13:37
2003.04.28
Помогите с поиском компонента


9-91136
Константин
2002-10-23 15:12
2003.04.28
Хочу блокировку AltTab, как в Fallout.


14-91547
tipman
2003-04-11 16:09
2003.04.28
активация окна


14-91541
Till
2003-04-11 14:46
2003.04.28
Чето не пойму почему нет установочного пакета?!


6-91429
ole
2003-03-04 05:06
2003.04.28
Проблема: Поток обрабатывающий одно подключение в TServerSocket