powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание процедуры с входным параметром по умолчанию - ошибка
10 сообщений из 10, страница 1 из 1
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490424
Server Version: WI-V2.5.2.26539 Firebird 2.5

Создание процедуры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE OR ALTER procedure CREATE_GRAPH1 (
    DATE_START timestamp,
    DATE_STOP timestamp,
    STEP_TIME smallint = 20,
    TEMP_1 numeric(6,2),
    TEMP_2 numeric(6,2))
returns (
    DT timestamp,
    TEMP numeric(6,2))
as
declare variable DT_1 timestamp;
declare variable DT_2 timestamp;
begin
  dt_1 = date_start;
  dt = date_start;
  temp = temp_1;
  suspend;
  dt_2 = dateadd (step_time SECOND to dt_1);
  while (dt_1 < :date_stop) do
  begin
   /*  select avg(d.tempiratura)  from replace_data d where d.dt_item  between :DT_1 and :DT_2
     into :temp; */
     dt = dt_2;
     suspend;
     dt_1 =  dt_2;
     dt_2 = dateadd (step_time SECOND to dt_1);
  end

end^



выдает ошибку

SQL error code = -204.
can not define a not null column with NULL as default value.
invalid clause --- 'defaults must be last'.


Поставив параметр со значение по-умолчанию последним - процедура создается

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE OR ALTER procedure CREATE_GRAPH1(
    DATE_START timestamp,
    DATE_STOP timestamp,
    TEMP_1 numeric(6,2),
    TEMP_2 numeric(6,2),
    STEP_TIME smallint = 20)
returns (
    DT timestamp,
    TEMP numeric(6,2))
as
declare variable DT_1 timestamp;
declare variable DT_2 timestamp;
begin
  dt_1 = date_start;
  dt = date_start;
  temp = temp_1;
  suspend;
  dt_2 = dateadd (step_time SECOND to dt_1);
  while (dt_1 < :date_stop) do
  begin
     dt = dt_2;
  /*  select avg(d.tempiratura)  from replace_data d where d.dt_item  between :DT_1 and :DT_2
     into :temp; */     
     suspend;
     dt_1 =  dt_2;
     dt_2 = dateadd (step_time SECOND to dt_1);
  end

end^



Что-то не так делаю или баг в FB?
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490429
Трул-ля-ля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Молочный АлександрЧто-то не так делаю или баг в FB?это не баг. Это by design.
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490433
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молочный АлександрЧто-то не так делаю
Документацию не читаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490596
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если подумать логически, то можно легко это понять. Дефолтные параметры созданы, чтобы их м.б. не указывать. А если они идут в середине - как сервер поймет, что это не STEP_TIME, а TEMP_1?
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490609
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalЕсли подумать логически, то можно легко это понять. Дефолтные параметры созданы, чтобы их м.б. не указывать. А если они идут в середине - как сервер поймет, что это не STEP_TIME, а TEMP_1?

Код: sql
1.
SELECT * FROM CREATE_GRAPH1(CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, , 0.0, 0.0)
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38490648
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_mFr0sT-BrutalЕсли подумать логически, то можно легко это понять. Дефолтные параметры созданы, чтобы их м.б. не указывать. А если они идут в середине - как сервер поймет, что это не STEP_TIME, а TEMP_1?

Код: sql
1.
SELECT * FROM CREATE_GRAPH1(CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, , 0.0, 0.0)



Код: sql
1.
2.
3.
4.
5.
-- procedure TEST(param1:integer)
-- ...
-- execute procedure TEST( 1);

alter or create procedure TEST(param1:integer; param2:integer = 0)
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38491425
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикольно, не знал, что можно так делать
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38709303
Johnnyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно ли в FB подставить параметр по умолчанию, не зная заранее его?

Например, есть procedure X(a=1, b=2), Хочется задать второй параметр, не заполняя первый.
В VB при вызове вроде можно писать что-то типа X(,1)
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38709308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnnyyyА можно ли
Нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание процедуры с входным параметром по умолчанию - ошибка
    #38709312
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Johnnyyy,

нет. В топку такую возможность, а вот от этого CORE-4152 я бы не отказался
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание процедуры с входным параметром по умолчанию - ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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