Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / ошибка в хранимой процедуре / 6 сообщений из 6, страница 1 из 1
30.05.2012, 09:42
    #37817452
777uragan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
почему выводит ошибку? -201 SQL error: A syntax error has occurred
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE PROCEDURE searcherInv(p1 VARCHAR(15),p2 VARCHAR(15),p3 VARCHAR(15),p4 VARCHAR(15),p5 VARCHAR(15))
returning VARCHAR(20) AS tipteh,VARCHAR(50) AS naim,VARCHAR(15) AS invent,VARCHAR(20) AS datevvod,VARCHAR(20) AS dategar,VARCHAR(20) AS sernum,VARCHAR(50) AS prim;
define tipteh VARCHAR(20);
define naim VARCHAR(50);
define invent VARCHAR(15);
define datevvod VARCHAR(20);
define dategar VARCHAR(20);
define sernum VARCHAR(20);
define prim VARCHAR(50);
foreach c1 FOR
SELECT tabl.name_tabl AS Тип_техники,spr_proc.name_proc||'/'||spr_chast.name_chast AS Наименование,inv_num AS Инвентарный,date_vvod AS Дата_ввода_в_экспл,date_gar AS Дата_окон_гаран,ser_num AS Серийн,primech AS Примечание INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((((tehnika INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN comp ON comp.num_comp=tehnika.num_teh)INNER JOIN spr_proc ON spr_proc.num_proc=comp.num_proc)INNER JOIN spr_chast ON spr_chast.num_chast=comp.num_chast) WHERE tehnika.inv_num=p1 AND tehnika.num_tabl=1 UNION
SELECT tabl.name_tabl,spr_prin.name_prin,inv_num,date_vvod,date_gar,ser_num,primech INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_prin ON spr_prin.num_prin=tehnika.num_teh) WHERE tehnika.inv_num=p2 AND tehnika.num_tabl=2 UNION
SELECT tabl.name_tabl,spr_ups.name_ups,inv_num,date_vvod,date_gar,ser_num,primech INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_ups ON spr_ups.num_ups=tehnika.num_teh) WHERE tehnika.inv_num=p3 AND tehnika.num_tabl=3 UNION
SELECT tabl.name_tabl,spr_lan.name_lan,inv_num,date_vvod,date_gar,ser_num,primech INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((tehnika  INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_lan ON spr_lan.num_lan=tehnika.num_teh) WHERE tehnika.inv_num=p4 AND tehnika.num_tabl=4 UNION
SELECT tabl.name_tabl,spr_teh_ofr.name_teh_ofr,inv_num,date_vvod,date_gar,ser_num,primech INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_teh_ofr ON spr_teh_ofr.num_teh_ofr=tehnika.num_teh) WHERE tehnika.inv_num=p5 AND tehnika.num_tabl=5;
RETURN tipteh,naim,invent,datevvod,dategar,sernum,prim WITH resume;
END foreach;
END PROCEDURE;
...
Рейтинг: 0 / 0
30.05.2012, 10:22
    #37817528
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
RETURN tipteh, naim, invent, datevvod, dategar, sernum, prim WITH resume;

1. нет секции into незаметил, даже наоборот, их слишком много, into нужна только в первом select
2. точка с запятой нужна только в самом конце, одна
...
Рейтинг: 0 / 0
30.05.2012, 10:36
    #37817555
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
типа так должно быть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE PROCEDURE searcherInv(....) returning ....;
 define ....;
 foreach c1 FOR
   SELECT .....  INTO  ..... FROM 
   UNION
   SELECT ....  FROM 
   RETURN .... WITH resume ; 
 END foreach;
END PROCEDURE;
...
Рейтинг: 0 / 0
30.05.2012, 12:47
    #37817803
777uragan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
Журавлев Денис,
не работает....ошибка в синтаксисе

SQL Error (-201): A syntax error has occurred.
Error Position: Ln: 5 Col: 26





Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE PROCEDURE search(p1 VARCHAR(15),p2 VARCHAR(15),p3 VARCHAR(15),p4 VARCHAR(15),p5 VARCHAR(15))
returning VARCHAR(20) AS tipteh,VARCHAR(50) AS naim,VARCHAR(15) AS invent,VARCHAR(20) AS datevvod,VARCHAR(20) AS dategar,VARCHAR(20) AS sernum,VARCHAR(50) AS prim;
define tipteh,naim,invent,datevvod,dategar,sernum,prim VARCHAR(50);
foreach c1 FOR
SELECT tabl.name_tabl AS Тип_техники,spr_proc.name_proc||'/'||spr_chast.name_chast AS Наименование,inv_num AS Инвентарный,date_vvod AS Дата_ввода_в_экспл,date_gar AS Дата_окон_гаран,ser_num AS Серийн,primech AS Примечание INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((((tehnika INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN comp ON comp.num_comp=tehnika.num_teh)INNER JOIN spr_proc ON spr_proc.num_proc=comp.num_proc)INNER JOIN spr_chast ON spr_chast.num_chast=comp.num_chast) WHERE tehnika.inv_num=p1 AND tehnika.num_tabl=1 UNION
SELECT tabl.name_tabl,spr_prin.name_prin,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_prin ON spr_prin.num_prin=tehnika.num_teh) WHERE tehnika.inv_num=p2 AND tehnika.num_tabl=2 UNION
SELECT tabl.name_tabl,spr_ups.name_ups,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_ups ON spr_ups.num_ups=tehnika.num_teh) WHERE tehnika.inv_num=p3 AND tehnika.num_tabl=3 UNION
SELECT tabl.name_tabl,spr_lan.name_lan,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika  INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_lan ON spr_lan.num_lan=tehnika.num_teh) WHERE tehnika.inv_num=p4 AND tehnika.num_tabl=4 UNION
SELECT tabl.name_tabl,spr_teh_ofr.name_teh_ofr,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_teh_ofr ON spr_teh_ofr.num_teh_ofr=tehnika.num_teh) WHERE tehnika.inv_num=p5 AND tehnika.num_tabl=5;
RETURN tipteh,naim,invent,datevvod,dategar,sernum,prim WITH resume;
end for;
END foreach;
END PROCEDURE;
...
Рейтинг: 0 / 0
30.05.2012, 12:49
    #37817810
777uragan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
777uraganЖуравлев Денис,
не работает....ошибка в синтаксисе

SQL Error (-201): A syntax error has occurred.
Error Position: Ln: 5 Col: 26





Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE PROCEDURE search(p1 VARCHAR(15),p2 VARCHAR(15),p3 VARCHAR(15),p4 VARCHAR(15),p5 VARCHAR(15))
returning VARCHAR(20) AS tipteh,VARCHAR(50) AS naim,VARCHAR(15) AS invent,VARCHAR(20) AS datevvod,VARCHAR(20) AS dategar,VARCHAR(20) AS sernum,VARCHAR(50) AS prim;
define tipteh,naim,invent,datevvod,dategar,sernum,prim VARCHAR(50);
foreach c1 FOR
SELECT tabl.name_tabl AS Тип_техники,spr_proc.name_proc||'/'||spr_chast.name_chast AS Наименование,inv_num AS Инвентарный,date_vvod AS Дата_ввода_в_экспл,date_gar AS Дата_окон_гаран,ser_num AS Серийн,primech AS Примечание INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((((tehnika INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN comp ON comp.num_comp=tehnika.num_teh)INNER JOIN spr_proc ON spr_proc.num_proc=comp.num_proc)INNER JOIN spr_chast ON spr_chast.num_chast=comp.num_chast) WHERE tehnika.inv_num=p1 AND tehnika.num_tabl=1 UNION
SELECT tabl.name_tabl,spr_prin.name_prin,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_prin ON spr_prin.num_prin=tehnika.num_teh) WHERE tehnika.inv_num=p2 AND tehnika.num_tabl=2 UNION
SELECT tabl.name_tabl,spr_ups.name_ups,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_ups ON spr_ups.num_ups=tehnika.num_teh) WHERE tehnika.inv_num=p3 AND tehnika.num_tabl=3 UNION
SELECT tabl.name_tabl,spr_lan.name_lan,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika  INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_lan ON spr_lan.num_lan=tehnika.num_teh) WHERE tehnika.inv_num=p4 AND tehnika.num_tabl=4 UNION
SELECT tabl.name_tabl,spr_teh_ofr.name_teh_ofr,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_teh_ofr ON spr_teh_ofr.num_teh_ofr=tehnika.num_teh) WHERE tehnika.inv_num=p5 AND tehnika.num_tabl=5;
RETURN tipteh,naim,invent,datevvod,dategar,sernum,prim WITH resume;
end for;
END foreach;
END PROCEDURE;






вот так сработало но почему-то без AS

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE search(p1 VARCHAR(15),p2 VARCHAR(15),p3 VARCHAR(15),p4 VARCHAR(15),p5 VARCHAR(15))
returning VARCHAR(20) AS tipteh,VARCHAR(50) AS naim,VARCHAR(15) AS invent,VARCHAR(20) AS datevvod,VARCHAR(20) AS dategar,VARCHAR(20) AS sernum,VARCHAR(50) AS prim;
define tipteh,naim,invent,datevvod,dategar,sernum,prim VARCHAR(50);
foreach c1 FOR
SELECT tabl.name_tabl,spr_proc.name_proc||'/'||spr_chast.name_chast,inv_num,date_vvod,date_gar,ser_num,primech INTO tipteh,naim,invent,datevvod,dategar,sernum,prim FROM ((((tehnika INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN comp ON comp.num_comp=tehnika.num_teh)INNER JOIN spr_proc ON spr_proc.num_proc=comp.num_proc)INNER JOIN spr_chast ON spr_chast.num_chast=comp.num_chast) WHERE tehnika.inv_num=p1 AND tehnika.num_tabl=1 UNION
SELECT tabl.name_tabl,spr_prin.name_prin,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_prin ON spr_prin.num_prin=tehnika.num_teh) WHERE tehnika.inv_num=p2 AND tehnika.num_tabl=2 UNION
SELECT tabl.name_tabl,spr_ups.name_ups,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_ups ON spr_ups.num_ups=tehnika.num_teh) WHERE tehnika.inv_num=p3 AND tehnika.num_tabl=3 UNION
SELECT tabl.name_tabl,spr_lan.name_lan,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika  INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_lan ON spr_lan.num_lan=tehnika.num_teh) WHERE tehnika.inv_num=p4 AND tehnika.num_tabl=4 UNION
SELECT tabl.name_tabl,spr_teh_ofr.name_teh_ofr,inv_num,date_vvod,date_gar,ser_num,primech FROM ((tehnika   INNER JOIN tabl ON tabl.num_tabl=tehnika.num_tabl)INNER JOIN spr_teh_ofr ON spr_teh_ofr.num_teh_ofr=tehnika.num_teh) WHERE tehnika.inv_num=p5 AND tehnika.num_tabl=5
RETURN tipteh,naim,invent,datevvod,dategar,sernum,prim WITH resume;
END foreach;
END PROCEDURE;
...
Рейтинг: 0 / 0
31.05.2012, 20:57
    #37820425
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в хранимой процедуре
777uragan, проблема на в AS, а скорее в названиях по-русски после AS...
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / ошибка в хранимой процедуре / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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