powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / В чем грабли с ХП ??
6 сообщений из 6, страница 1 из 1
В чем грабли с ХП ??
    #32083362
Jcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пытаюсь создать ХП:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SET TERM !! ;
CREATE PROCEDURE getDogovor (id decimal)
AS
BEGIN
 IF (:id= 0 ) THEN
  BEGIN
   SELECT * FROM dogovor d INNER JOIN postavshik p ON d.id_postav=p.id
   INNER JOIN tovar t ON d.id_tovara=t.id;
  END
  ELSE
   BEGIN
 select * from dogovor d inner join postavshik p on d.id_postav=p.id
 inner join tovar t on d.id_tovara=t.id where id=:id;
   END
END !!
SET TERM ; !!

А оно мне :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 7, char 40
;
Statement: CREATE PROCEDURE getDogovor (id decimal)
AS
BEGIN
IF (:id=0) THEN
BEGIN
SELECT * FROM dogovor d INNER JOIN postavshik p ON d.id_postav=p.id
INNER JOIN tovar t ON d.id_tovara=t.id;
END
ELSE
BEGIN
select * from dogovor d inner join postavshik p on d.id_postav=p.id
inner join tovar t on d.id_tovara=t.id where id=:id;
END
END

С чего бы это ??? Или в интербейс нельзя набор записей возвращать ???
...
Рейтинг: 0 / 0
В чем грабли с ХП ??
    #32083862
alubetsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно не уверен, то мне так кажется, что эта ХП должа возвращать какие-то данные, а как !?!?!?
Как я понимаю должна быть конструкция :

create procedure GetDogovor(id integer)
returns (OUT_ID integer,
OUT_NAME varchar(20),
OUT_DATE date)
as
begin
select id, name, date
from table
where id=:id
into :OUT_ID, :OUT_NAME, :OUT_DATE;

suspend;
end;

может в suspend; прикол, а может то что не указывается во что выбирать ...
попробуй, может поможет...
сорри, если в чем-то был не прав ...

alubetsky@mail.ru
...
Рейтинг: 0 / 0
В чем грабли с ХП ??
    #32084428
Babrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В процедуре, по крайней мере, должна быть конструкция into Select * from Dogovor Into :Field1, :Field2 и т.д. Число полей (Field ) должно быть равно числу полей в таблице Dogovor (т.к. ты написал Select *). Так же должна присутствовать конструкция Returns(...), где должны быть описаны эти поля
...
Рейтинг: 0 / 0
В чем грабли с ХП ??
    #32084737
Jcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выходит что с ХП нельзя полуцчить набор данных, тоесть несколько записей ???
...
Рейтинг: 0 / 0
В чем грабли с ХП ??
    #32084775
Babrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По чему же нельзя? Ты скорее всего неправильно понял.
Во-первых посмотри хп в демонстрационных базах(employe.gdb,customer.gdb)
Ну вот пример простой хп.

CREATE PROCEDURE SELECT_FIRMS
RETURNS (
FirmId Integer,
FIRMNAME VARCHAR(120))
AS
BEGIN
FOR SELECT
OKEY,
FIRMNAME,
FROM FIRMS
INTO
:FirmId,
:FIRMNAME,
DO
BEGIN
SUSPEND;
END
END
...
Рейтинг: 0 / 0
В чем грабли с ХП ??
    #32084802
alubetsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет !!! еще раз ...
Радуйся !!! Вот в IB как раз таки можно вернуть набор строк, а вот в Oracle нет !!! :(. Сейчас пишу под Oracle, сталкнулся с таким приколом !!! :((
в IB и MS SQL можно вернуть набор строк, так всем любителям этих СУБД, пользуясь случаем, привет :)) !!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / В чем грабли с ХП ??
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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