powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура на вставку данных с возвратом значения
5 сообщений из 5, страница 1 из 1
Процедура на вставку данных с возвратом значения
    #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
Процедура на вставку данных с возвратом значения
    #39868781
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ness_co,

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

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

Спасибо. протупил.
...
Рейтинг: 0 / 0
Процедура на вставку данных с возвратом значения
    #39868790
Фотография 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
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура на вставку данных с возвратом значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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