powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка в Stored Proc
11 сообщений из 11, страница 1 из 1
Ошибка в Stored Proc
    #32296323
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю процедуру:

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

CREATE PROCEDURE EX (fckey INTEGER, e1key INTEGER)
RETURNS(
abkey INTEGER,
fckey INTEGER,
sckey INTEGER,
sp11key INTEGER,
sp12key INTEGER,
balle1 TBALL,
balle2 TBALL,
balle3 TBALL,
balle4 TBALL,
e1key INTEGER,
e2key INTEGER,
e3key INTEGER,
e4key INTEGER,
N INTEGER
)
AS BEGIN FOR

****

ISQL Ругается на ошибку...Unknown TBALL - Это домен.
Как его правильно описать? Прбовала "TBALL", (TBALL) и (TBALL) Smallint - то же самое...только еще и на скобки ругается
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296330
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ХП и триггерах использовать домены невозможно.
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296331
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И как мне описать это поле тогда?
Просто Smallint
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296332
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Катерина
Именно так : SMALLINT !
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296337
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно в запросе использовать Union и вводить новые переменные?
Потому как написав так:

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

CREATE PROCEDURE EX (fckey INTEGER, e1key INTEGER)
RETURNS(
abkey INTEGER,
fckey INTEGER,
sckey INTEGER,
sp11key INTEGER,
sp12key INTEGER,
balle1 SMALLINT,
balle2 SMALLINT,
balle3 SMALLINT,
balle4 SMALLINT,
e1key INTEGER,
e2key INTEGER,
e3key INTEGER,
e4key INTEGER,
N INTEGER
)
AS BEGIN FOR

select abKey,fckey,scKey,sp11Key,sp12Key,BallE1,BallE2,BallE3,BallE4,sc.e1key,sc.e2key,sc.e3key,sc.e4key,(1) n from ab join sc on ab.sckey=sc.sckey where fckey = :fckey and sc.e1key = :e1key
UNION
select abKey,fckey,scKey,sp11Key,sp12Key,BallE1,BallE2,BallE3,BallE4,sc.e1key,sc.e2key,sc.e3key,sc.e4key,(2) n from ab join sc on ab.sckey=sc.sckey where fckey = :fckey and sc.e1key = :e1key
UNION
select abKey,fckey,scKey,sp11Key,sp12Key,BallE1,BallE2,BallE3,BallE4,sc.e1key,sc.e2key,sc.e3key,sc.e4key,(3) n from ab join sc on ab.sckey=sc.sckey where fckey = :fckey and sc.e1key = :e1key
UNION
select abKey,fckey,scKey,sp11Key,sp12Key,BallE1,BallE2,BallE3,BallE4,sc.e1key,sc.e2key,sc.e3key,sc.e4key,(4) n from ab join sc on ab.sckey=sc.sckey where fckey = :fckey and sc.e1key = :e1key

INTO :abkey,
:fckey,
:sckey,
:sp11key,
:sp12key,
:balle1,
:balle2,
:balle3,
:balle4,
:e1key,
:e2key,
:e3key,
:e4key,
:N

DO
SUSPEND;

END
^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;


Получила ошибку

Unsuccessful metadata update
STORE RDB$PROCEDURE_PARAMETERS failed
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_18".
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296365
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT ... INTO - в ХП может выводить только 1 запись, а в данном случае выводится несколько, так что надо использовать конструкцию
FOR SELECT ... INTO .

P.S. Вот только не знаю как будет работать UNION . И возможно ли вообще использовать его в ХП.
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296379
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я итак использую FOR SELECT, просто FOR в той же строчке, что и BEGIN.

Без UNION и переменной N ошибка та же.
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296385
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так пытайся закомментировать куски пока не найдёшь причину.
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296390
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня еще смущает то, что передаваемые параметры используются и в конструкции select. Можно ли делать так?
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296401
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А параметры надо писать так - :abKey, :fckey, :scKey ...
т.е. двоеточие перед ними, так вернее, чтобы не путать с названиями полей ...
...
Рейтинг: 0 / 0
Ошибка в Stored Proc
    #32296404
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашла ошибку! :)
Написала

CREATE PROCEDURE "EX"
(
"FKEY" INTEGER,
"EKEY" INTEGER
)

И еще нашла пару ошибок..

Всем спасибо :))
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка в Stored Proc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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