powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
4 сообщений из 4, страница 1 из 1
Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
    #39514848
NoobON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Не силен в написании процедур. Понадобилось написать процедуры с возращенные результата,
к примеру такую (взято из руководства по firebird 2.5):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
EXECUTE BLOCK (
  x DOUBLE PRECISION = 4, 
  y DOUBLE PRECISION = 2)
RETURNS (gmean DOUBLE PRECISION)
AS
BEGIN
  gmean = sqrt(x*y);
  SUSPEND;
END


Но что то ничего не получается. Ошибка:

Код: plaintext
1.
2.
3.
4.
5.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 24.
4.
...
Рейтинг: 0 / 0
Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
    #39514855
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoobON,

Там нет такого синтаксиса:
Код: plsql
1.
2.
3.
EXECUTE BLOCK (
  x DOUBLE PRECISION = 4, 
  y DOUBLE PRECISION = 2)



Если есть входные параметры - нужно их называть:
Код: plsql
1.
2.
3.
EXECUTE BLOCK (
  x DOUBLE PRECISION = :X, 
  y DOUBLE PRECISION = :Y)



Если же в процедуру ничего передавать не надо - то вообще ничего там не указывать:
Код: plsql
1.
2.
3.
EXECUTE BLOCK
AS
...



Если в процедуре нужны переменные - то и заводи их как переменные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
EXECUTE BLOCK
AS
DECLARE VARIABLE x DOUBLE PRECISION; 
DECLARE VARIABLE Y DOUBLE PRECISION; 
BEGIN
X = 4;
Y = 2;



Ну и общее замечание - называем мы это процедурой, но точнее это называется EXECUTE BLOCK и на сервере оно не сохраняется.
Процедура создается командой CREATE PROCEDURE.
...
Рейтинг: 0 / 0
Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
    #39514856
JohnyCage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NoobON,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
EXECUTE BLOCK
returns (
gmean DOUBLE PRECISION
)
AS
DECLARE VARIABLE x DOUBLE PRECISION = 4;
DECLARE VARIABLE y DOUBLE PRECISION = 2;
BEGIN
  gmean = sqrt(:x*:y);
  SUSPEND;
END
...
Рейтинг: 0 / 0
Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
    #39514857
NoobON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, большое!
Решило мою проблему
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Процедура с возращенные результата (EXECUTE BLOCK RETURNS)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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