Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание процедуры с входным параметром по умолчанию - ошибка / 10 сообщений из 10, страница 1 из 1
05.12.2013, 15:15
    #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
05.12.2013, 15:17
    #38490429
Трул-ля-ля
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание процедуры с входным параметром по умолчанию - ошибка
Молочный АлександрЧто-то не так делаю или баг в FB?это не баг. Это by design.
...
Рейтинг: 0 / 0
05.12.2013, 15:19
    #38490433
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание процедуры с входным параметром по умолчанию - ошибка
Молочный АлександрЧто-то не так делаю
Документацию не читаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.12.2013, 16:20
    #38490596
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание процедуры с входным параметром по умолчанию - ошибка
Если подумать логически, то можно легко это понять. Дефолтные параметры созданы, чтобы их м.б. не указывать. А если они идут в середине - как сервер поймет, что это не STEP_TIME, а TEMP_1?
...
Рейтинг: 0 / 0
05.12.2013, 16:26
    #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
05.12.2013, 16:43
    #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
06.12.2013, 11:11
    #38491425
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание процедуры с входным параметром по умолчанию - ошибка
Прикольно, не знал, что можно так делать
...
Рейтинг: 0 / 0
30.07.2014, 17:18
    #38709303
Johnnyyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание процедуры с входным параметром по умолчанию - ошибка
А можно ли в FB подставить параметр по умолчанию, не зная заранее его?

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

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


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