Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура на вставку данных с возвратом значения / 5 сообщений из 5, страница 1 из 1
29.09.2019, 22:53
    #39868778
ness_co
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура на вставку данных с возвратом значения
Доброго.

Хочу выполнить вставку данных в несколько связанных таблиц и получить назад ID записи для установки фокуса на даннуя запись в гриде.
Текс процедуры:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
create or alter procedure P_GOODS_INS (
    GG_ID integer,
    G_NAME varchar(100),
    G_NAME_FOR_PRINT varchar(100),
    G_PRICE numeric(15,8),
    G_USED blob sub_type 0 segment size 80,
    P_ID integer,
    GBC_BAR_CODE varchar(20))
returns (
    G_ID integer)
as
declare variable G_ID integer;
declare variable PG_ID integer;
declare variable GBC_ID integer;
begin
    SELECT NEXT VALUE FOR gen_goods_id FROM RDB$DATABASE into :G_ID;
    SELECT NEXT VALUE FOR gen_packing_goods_id FROM RDB$DATABASE into :PG_ID;
    SELECT NEXT VALUE FOR gen_goods_bar_code_id FROM RDB$DATABASE into :GBC_ID;
    
    
    insert into GOODS (G_ID, GG_ID, G_NAME, G_NAME_FOR_PRINT, G_PRICE, G_USED)
    values (:G_ID, :GG_ID, :G_NAME, :G_NAME_FOR_PRINT, :G_PRICE, :G_USED);
    
    insert into PACKING_GOODS (PG_ID, G_ID, P_ID, PG_COEFFICIENT, PG_DEFAULT, PG_BASE, PG_FOR_SALE, PG_FOR_ORDER, PG_USED)
    values (:PG_ID, :G_ID, :P_ID, 1, 1, 1, 1, 1, 1);
    
    insert into GOODS_BAR_CODE (GBC_ID, G_ID, PG_ID, GBC_BAR_CODE, GBC_DEFAULT, GBC_USED)
    values (:GBC_ID, :G_ID, :PG_ID, :GBC_BAR_CODE, 1, 1);
  --suspend;
  --return G_ID;
end^


При компиляции процедуры получаю ошибку:
Код: sql
1.
variable redeclared: 'G_ID'


на строку
Код: sql
1.
2.
returns (
    G_ID integer)
...
Рейтинг: 0 / 0
29.09.2019, 22:59
    #39868781
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура на вставку данных с возвратом значения
ness_co,

в словаре перевод ошибки посмотреть не догадались?
...
Рейтинг: 0 / 0
29.09.2019, 23:01
    #39868782
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура на вставку данных с возвратом значения
ness_co,

Ну так а зачем ты два параметра объявил с одинаковым именем?
...
Рейтинг: 0 / 0
29.09.2019, 23:15
    #39868787
ness_co
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура на вставку данных с возвратом значения
YuRock,

Спасибо. протупил.
...
Рейтинг: 0 / 0
29.09.2019, 23:26
    #39868790
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура на вставку данных с возвратом значения
ness_co SELECT NEXT VALUE FOR gen_goods_id FROM RDB$DATABASE into :G_ID;

господи помилуй, зачем в процедуре селектить из rdb$database? Это лишнее обращение к странице данных.

G_ID=NEXT VALUE FOR gen_goods_id;

или

G_ID=gen_id(gen_goods_id, 1);

и всё. Это же процедурный SQL.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура на вставку данных с возвратом значения / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]