Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 Перегрузка процедур IDS 9.40  [new]
Leonid Belov
Member

Откуда: Санкт-Петербург
Сообщений: 111
Приветствую всех!

Обнаружилась интересная вещь. Создаю процедуру:

CREATE PROCEDURE proc1(id INTEGER)
-- любой код
END PROCEDURE;

Успешно. Создаю еще одну:

CREATE PROCEDURE proc1(id INTEGER) RETURNING INTEGER;
-- любой код
RETURN 0;

END PROCEDURE;

Снова успешно.

Как такое может быть? Сигнатуры вроде одинаковые, а наличие/отсутствие возвращаемого
значения вроде бы несущественно.

Попытка создания третьего экземпляра уже заканчивается ошибкой.

IDS 9.40 FC3 SPARC Solaris.
22 фев 07, 12:17    [3821438]     Ответить | Цитировать Сообщить модератору
 Re: Перегрузка процедур IDS 9.40  [new]
Leonid Belov
Member

Откуда: Санкт-Петербург
Сообщений: 111
То же самое происходит в версиях:

9.40 FC7 SPARC
9.40 TC7 Windows

Похоже, авторы не всегда различают процедуры и функции
22 фев 07, 12:35    [3821619]     Ответить | Цитировать Сообщить модератору
 Re: Перегрузка процедур IDS 9.40  [new]
leonx2
Member

Откуда:
Сообщений: 52
Читать и еще раз читать документацию. В 9.40 возможно создание функций одинаковых по имени, но имеющих разное кол-во и типы передаваемых параметров.
Мы тоже наступили на эти грабли когда мигрировали с 7.31.
23 фев 07, 14:05    [3826681]     Ответить | Цитировать Сообщить модератору
 Re: Перегрузка процедур IDS 9.40  [new]
Leonid Belov
Member

Откуда: Санкт-Петербург
Сообщений: 111
Это понятно. Только у этих функций ОДИНАКОВЫЕ имена и ОДИНАКОВЫЕ списки параметров.
Отличаются они только тем, что одна что-то возвращает, а другая - нет.
Тип(ы) возвращаемых значений в сигнатуру никогда не входили.
26 фев 07, 11:25    [3831358]     Ответить | Цитировать Сообщить модератору
 Re: Перегрузка процедур IDS 9.40  [new]
leonx2
Member

Откуда:
Сообщений: 52
Ну что сказать, в "IBM Informix User-Defined Routines and Data Types Developer’s Guide"
про _возвращаемые_ явно такого не сказано, но не сказано и обратного!
С точки зрения перегружаемых(overload) функций поведение правильное потому что иначе не будет работать приведение типов (type cast)...
26 фев 07, 11:55    [3831574]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить