возвращение данных(+)
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



возвращение данных(+) Expand / Collapse
Автор
Сообщение
27.01.2006 9:12
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 30.05.2006 3:30
Сообщ.: 51, Visits: 567
Напмсана хранимая процедура:
set term !! ;
create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)
returns (icod integer)
as
begin
Select codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into icod;
if (:icod != 0) then exit;
icod = gen_id (newcod1, 1);
Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);
end !!
set term ; !!

теперь надо из дельфи приложения получить icod. который является returns.
Чето ваше не получилось. Помогите как взять icod или переписать надо хранимую процедуру??
Сообщ. #889569
27.01.2006 9:46
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
[quote="doctor2l6"]Напмсана хранимая процедура:
set term !! ;
create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)
returns (icod integer)
as
begin
Select codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into icod;
if (:icod != 0) then exit;
icod = gen_id (newcod1, 1);
Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);
end !!
set term ; !!

теперь надо из дельфи приложения получить icod. который является returns.
Чето ваше не получилось. Помогите как взять icod или переписать надо хранимую процедуру??[/quote]

Блин, когда тут научатся вопросы задавать ? Хотя бы тип БД указал .Я то вижу, что IB/FB, но другие могут и не увидеть

set term !! ;
create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)
returns (icod integer)
as
begin
Select codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into :icod;
if (:icod != 0) then exit;
icod = gen_id (newcod1, 1);
Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);

SUSPEND;


end !!
set term ; !!
Сообщ. #889574
30.01.2006 3:47
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 30.05.2006 3:30
Сообщ.: 51, Visits: 567
добавил строчку SUSPEND.
но как воспользоваться этой задержкой так и не понял. пробовал всякое.
В дельфи, компонент IBQuery1, добавил 5 параметров: p1, p2, p3, p4, p5 - результирующий. скл выражение: Add('EXECUTE PROCEDURE add_razdel (:p1, :p2, :p3, :p4)'); Пытаюсь p5 прописать. но везде кричит ошибка,хотя в процедуре описан же возвращаемый элемент
Сообщ. #889701
30.01.2006 9:47
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
[quote="doctor2l6"]добавил строчку SUSPEND.
но как воспользоваться этой задержкой так и не понял. пробовал всякое.
В дельфи, компонент IBQuery1, добавил 5 параметров: p1, p2, p3, p4, p5 - результирующий. скл выражение: Add('EXECUTE PROCEDURE add_razdel (:p1, :p2, :p3, :p4)'); Пытаюсь p5 прописать. но везде кричит ошибка,хотя в процедуре описан же возвращаемый элемент[/quote]

Конечно будет кричать... Галиматью написал...Руководство пользователя надо читать..Хотя бы иногда, когда уже ничего не помогает... Для выборки значений используется конструкция SELECT .. FROM... Потому вид выборки д.б такой: SELECT * FROM Add_Razdel(:p1, :p2, :p3, :p4)... Этот SELECT и вернет ICOD.Ты, кстати, что вообще хочешь сделать ? Что-то тут на ерунду какую-то похоже...
Сообщ. #889708
30.01.2006 10:14
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 30.05.2006 3:30
Сообщ.: 51, Visits: 567
ну читал я это руководство, но нигде не видел запуск и возвращение данных с хранимой процедуры. Теперь понял, что мона и так
База на интербейс сервере.Создал хранимые процедуры для добавления данных.Пишу дельфи приложение которое будет работать с базой.Например надо добавить данные, допустим норматив-передаются данные в процедуру(название раздела, название параметра, значение норматива).Та вызывает процедуру1 добавляения данных в табл1 разделов(название раздела и возвращет код), так же вызов процедуры2 добавления в табл2 параметров(название параметра и возвращет код). Затем вызывает процедуру3 добавления норматива в табл3 (код норматива, код раздела, код параметра, значение)
Сообщ. #889709
30.01.2006 10:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
[quote="doctor2l6"]ну читал я это руководство, но нигде не видел запуск и возвращение данных с хранимой процедуры. Теперь понял, что мона и так
База на интербейс сервере.Создал хранимые процедуры для добавления данных.Пишу дельфи приложение которое будет работать с базой.Например надо добавить данные, допустим норматив-передаются данные в процедуру(название раздела, название параметра, значение норматива).Та вызывает процедуру1 добавляения данных в табл1 разделов(название раздела и возвращет код), так же вызов процедуры2 добавления в табл2 параметров(название параметра и возвращет код). Затем вызывает процедуру3 добавления норматива в табл3 (код норматива, код раздела, код параметра, значение)
[/quote]
Если все тут написанное соответсвует действительности (в плане ПРОЦЕДУРА вызвает ПРОЦЕДУРУ1(название раздела и возвращет код)), то в ПОЦЕДУРЕ (опять же, энциклопию (RTFM (Reading The Fucking Manual)!!!) читать нужно) можно вызвать ПРОЦЕДУРУ1 в виде EXECUTE PROCEDURE PROC1(PAR1, PAR2..., PARn) RETURNING VALUES :RET_PAR1, :RET_PAR2,..., RET_PARn;
Сообщ. #889710
30.01.2006 10:51
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 30.05.2006 3:30
Сообщ.: 51, Visits: 567
спасибо
неработает ругается на RETURNING.
можешь мне дать ссылку на мануал по интербейсу.
а то мой ваше сокращенный нифига нету этого
буду благодарен если даш ссылку на руссифицированный мануал
и тогда буду ртфм :)
Сообщ. #889712
30.01.2006 11:09
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.09.2007 22:12
Сообщ.: 343, Visits: 3 388
А че на InterBase "сидишь" ? Я использую FireBird 1.5.3. Ссылка - www.ibase.ru. Там много чего есть.. RETURNING можно использовать ТОЛЬКО в PSQL (т.е. триггерах/процедурах)
procedure p1
as
declare variable v1 integer;
begin
...
execute procedure p2(:par1) returning values :v1;
if (v1=1) then
...
end
Сообщ. #889716
31.01.2006 4:07