Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не компилирует ХП с инструкцией select / 8 сообщений из 8, страница 1 из 1
21.01.2004, 00:58
    #32382408
Mudd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
У меня такой бок, в скрипте создаю такую ХП:
set term # ;
create procedure se_tovar (tn integer)
as
Begin
select * from postavshik where pn=(select pn from ptb where tn=:tn);
End#

и пишет
Token unknown, указывая на ";"

Инструкция select правильня, потому что без процедуры работает.
Помогите, курсовой завтра сдавать.
...
Рейтинг: 0 / 0
21.01.2004, 04:34
    #32382430
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
а зачем тебе такой селект?
ты ведь что-то хочешь сделать с результатами селекта, так?
значит их, рехультаты, нужно куда-то положить.
например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
create procedure se_tovar (tn integer) 
as 
declare variable temp integer;
Begin 
select first  1  id from postavshik where pn=(select pn from ptb where tn=:tn) into :temp; 
end

обрати внимание на следующие вещщи:
я описал переменную для хранения полученного селектом результата:
declare variable temp integer;
я сделал first 1 для того чтобы получить только 1 результат. иначе я могу получить набор данных и сгенерируется ошибка. затем я указал, какие конкретно поля я хочу получить(никогда не указывай *)
затем при помощи конструкции inyo я указал, куда следует поместить значение полей.

возможен еще следующий вариант

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create procedure se_tovar (tn integer) 
as 
declare variable temp integer;
declare variable nm varchar( 1000 );
Begin 
select id, name from postavshik where pn=(select pn from ptb where tn=:tn) into :temp, :nm do
begin
  /*do something/*
end 
exit;
end

в данном случае я выбираю весь набор данных, и на каждую выданную строку набора будет выполнятся блок do.
...
Рейтинг: 0 / 0
21.01.2004, 09:06
    #32382528
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
alex_k

во втором варианте перед словом select не забыл ли ты слово for?
...
Рейтинг: 0 / 0
21.01.2004, 09:19
    #32382538
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
забыл ли :-)
но давайте считать это упражнением для самостоятельной работы :-)
...
Рейтинг: 0 / 0
21.01.2004, 10:45
    #32382648
Sclif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
FOR не обязателен, обязателен INTO. Поэтому и ругается. Без FOR будет возвращатся одна запись (если будет возвращаться вообще, конечно) и цикла не будет.
...
Рейтинг: 0 / 0
21.01.2004, 15:34
    #32383338
Даниил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
А без SUSPEND вообще нифига не будет.
...
Рейтинг: 0 / 0
21.01.2004, 15:38
    #32383351
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
ДаниилА без SUSPEND вообще нифига не будет.
Так уж и вообще? ;)
EXECUTE PROCEDURE ... RETURNING_VALUES ...
...
Рейтинг: 0 / 0
22.01.2004, 01:11
    #32383889
Mudd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не компилирует ХП с инструкцией select
В том-то всё и дело, что это процедура поиска в моей БД, я её потом в Делфях в Грид через storedproc. Мне целая таба нужна. Ну это можно сделать, варирирую те процедуры, которые привели выше. Спасибо, проблема обойдена =)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не компилирует ХП с инструкцией select / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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