Синтаксис хранимой процедуры

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
KostyaK
Сообщения: 5
Зарегистрирован: 16 май 2006, 13:02

Синтаксис хранимой процедуры

Сообщение KostyaK » 18 июл 2006, 09:42

Работаю с IB7.
Проблема с созданием хранимой процедуры.
Необходимо в поле NUMBERDEVICE таблицы Devices вставить некоторое значение (которое является входным параметром процедуры).
Пишу в IBConsol

SET TERM !! ;
CREATE PROCEDURE MyProc ("NUMBERDEVICE_from_SCADA" INTEGER)
AS
BEGIN
INSERT INTO Devices (NUMBERDEVICE) VALUES ("NUMBERDEVICE_from_SCADA")
EXIT ;
END ;
SET TERM ; !!

Не фурычит...
Пишет, что ошибка в 5-ой строке (с оператором INSERT) - "Token UnKnown", SQL Error code - 104.

Очень подозреваю, что дело в синтаксисе, но что именно?

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 18 июл 2006, 09:54

Попробуй через IB Expert это сделать. Что за изврат через консоль писать :shock:.

KostyaK
Сообщения: 5
Зарегистрирован: 16 май 2006, 13:02

Re: Синтаксис хранимой процедуры

Сообщение KostyaK » 18 июл 2006, 10:04

Проблема в строке
KostyaK писал(а): INSERT INTO Devices (NUMBERDEVICE) VALUES ("NUMBERDEVICE_from_SCADA")
Очень подозреваю, что дело в синтаксисе, но что именно?
Если поменять на
INSERT INTO Devices (NUMBERDEVICE) VALUES (13)
,то всё нормально работает.
Вопрос: как передать входной параметр NUMBERDEVICE_from_SCADA в строку INSERT?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 18 июл 2006, 10:11

Костя, иди пожалуйста, читай документацию.

KostyaK
Сообщения: 5
Зарегистрирован: 16 май 2006, 13:02

Сообщение KostyaK » 18 июл 2006, 10:21

kdv писал(а):Костя, иди пожалуйста, читай документацию.
1) Сейчас этмим и занимаюсь
2) И долго думал над столь информативным ответом?

adima
Сообщения: 12
Зарегистрирован: 06 сен 2005, 16:16

Сообщение adima » 18 июл 2006, 10:56

KostyaK писал(а):
kdv писал(а):Костя, иди пожалуйста, читай документацию.
1) Сейчас этмим и занимаюсь
2) И долго думал над столь информативным ответом?
двоеточие поставь перед имененем параметра

Код: Выделить всё

INSERT INTO Devices (NUMBERDEVICE) VALUES (:"NUMBERDEVICE_from_SCADA") 

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 18 июл 2006, 11:02

1) Сейчас этмим и занимаюсь
молодец.
2) И долго думал над столь информативным ответом?
чтобы было понятно - я администратор ibase.ru, и собственно владелец и автор всего этого. Так что выпендриваться не надо. Если я тебе посоветовал почитать документацию, значит твой вопрос настолько элементарен, что не заслуживает упоминания в статьях сайта, FAQ, и в том числе обсуждения здесь.

Кроме того, ни здесь ни на sql.ru не любят, когда пусть даже новичок начинает требовать разжевать ему элементарные вещи из документации или статей на сайте.
Последний раз редактировалось kdv 18 июл 2006, 11:04, всего редактировалось 1 раз.

KostyaK
Сообщения: 5
Зарегистрирован: 16 май 2006, 13:02

Сообщение KostyaK » 18 июл 2006, 11:03

adima писал(а): двоеточие поставь перед имененем параметра
Ага, и точку с запятой в конце строки

Код: Выделить всё

INSERT INTO Devices (NUMBERDEVICE) VALUES (:"NUMBERDEVICE_from_SCADA"); 
Спасибо, работает.

Ответить