|
|
|
Forum 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 или переписать надо хранимую процедуру??
|
|
|
|
|
Supreme 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 ; !!
|
|
|
|
|
Forum 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 прописать. но везде кричит ошибка,хотя в процедуре описан же возвращаемый элемент
|
|
|
|
|
Supreme 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.Ты, кстати, что вообще хочешь сделать ? Что-то тут на ерунду какую-то похоже...
|
|
|
|
|
Forum Guru
      
участник
Last Login: 30.05.2006 3:30
Сообщ.: 51,
Visits: 567
|
|
ну читал я это руководство, но нигде не видел запуск и возвращение данных с хранимой процедуры. Теперь понял, что мона и так
База на интербейс сервере.Создал хранимые процедуры для добавления данных.Пишу дельфи приложение которое будет работать с базой.Например надо добавить данные, допустим норматив-передаются данные в процедуру(название раздела, название параметра, значение норматива).Та вызывает процедуру1 добавляения данных в табл1 разделов(название раздела и возвращет код), так же вызов процедуры2 добавления в табл2 параметров(название параметра и возвращет код). Затем вызывает процедуру3 добавления норматива в табл3 (код норматива, код раздела, код параметра, значение)
|
|
|
|
|
Supreme 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;
|
|
|
|
|
Forum Guru
      
участник
Last Login: 30.05.2006 3:30
Сообщ.: 51,
Visits: 567
|
|
спасибо
неработает ругается на RETURNING.
можешь мне дать ссылку на мануал по интербейсу.
а то мой ваше сокращенный нифига нету этого
буду благодарен если даш ссылку на руссифицированный мануал
и тогда буду ртфм :)
|
|
|
|
|
Supreme 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
|
|
|
|
| | |