Форум: "Базы";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизНапомните, пожулайста, как в IB7 создать хранимую функцию Найти похожие ветки
← →
novill © (2007-02-14 16:21) [0]Именно функцию а не хранибую процедуру!
Чтобы можно было сделатьselect myfunc(field1) from table1
То есть чтобы ее можно было вызывать так же, как UDF.
← →
Johnmen © (2007-02-14 16:24) [1]Нет там хранимых процедур. Ты еще ibase.ru не читал?
← →
Val © (2007-02-14 16:26) [2]серьезно? можно линк?
← →
Val © (2007-02-14 16:27) [3]или имеется ввиду не изменение синтаксиса, а то что хп в иб по сути - функция?
← →
Сергей М. © (2007-02-14 16:30) [4]
> Именно функцию а не .. процедуру
> Чтобы можно было сделать select myfunc(field1)
Ты на голову не жаловался сегодня ?
А в самую пору)
← →
Desdechado © (2007-02-14 16:43) [5]В IB7 не знаю, а в более ранних версиях такое невозможно.
Т.к. если процедура возвращает набор данных, то ее можноиспользовать вместо таблицы. Если она не возвращает набор данных, то только через EXECUTE PROCEDURE.
← →
novill © (2007-02-14 16:48) [6]Я знаю, что у хранимых процедур есть возвращаемые значения.
Нужно другое - чтобы ее можно было вызвать в запросе, как, например, функцию LTRIM
select LTRIM(field1) from table1
> [4] Сергей М. © (14.02.07 16:30)
А вы что-то полезное в этом мире делаете?
← →
Desdechado © (2007-02-14 16:50) [7]> функцию LTRIM
Это UDF
← →
novill © (2007-02-14 16:54) [8]> [7] Desdechado © (14.02.07 16:50)
> > функцию LTRIM
> Это UDF
Это я знаю :) но мне не нужна UDF, мне хватает того, что можно сделать в ХП.
← →
Сергей М. © (2007-02-14 16:55) [9]
> вы что-то полезное в этом мире делаете?
Конечно делаю.
Гажу, к примеру. Преимущественно - большими зловонными кучами. Ибо дерьмо, как известно, не только вредно, но и полезно)
Особенно люблю гадить, отправляя подальше всяк и каждого при каждом удобном случае (к документации на IB ISQL/PSQL) и поближе (к той же самой док-ции, но с косвенной ссылкой на ibase.ru).
← →
novill © (2007-02-14 17:00) [10]> [9] Сергей М. © (14.02.07 16:55)
То, что вы гадите, я заметил. А вот где хоть одна вразумительная ссылка на документацию в вашем посте?
> [4] Сергей М. © (14.02.07 16:30)
>
> Ты на голову не жаловался сегодня ?
>
> А в самую пору)
← →
Desdechado © (2007-02-14 17:15) [11]А чем не нравится вызов EXECUTE PROCEDURE ?
← →
Johnmen © (2007-02-14 17:21) [12]
> Johnmen © (14.02.07 16:24) [1]
> Нет там хранимых процедур. Ты еще ibase.ru не читал?
...функций...
конечно же.
← →
Val © (2007-02-14 17:24) [13]эх :)
← →
ЮЮ © (2007-02-15 08:49) [14]
> select myfunc(field1) from table1
Предполагает набор данных, количество строк которого равно количеству записей в таблице table1, а значение поля вычислено по значению field1 в ХП myfunc.
Почему бы тогда myfunc самой не возвращать нужный НД?
← →
novill © (2007-02-15 09:27) [15]> [14] ЮЮ © (15.02.07 08:49)
Все было хорошо, но использовать стандарный вызов ХП в сложных запросах неудобно.
Например, следующий запрос прост для пониманияselect ltim(field1) from table1
inner join table2 on table1.field2=ltrim(table2.field2) and table1.field3=table2.field3
where...
А во что он превратиться если бы пришлось функцию ltim вызывать как ХП?
Ладно, тема закрыта. Я уже удф написал.
← →
ЮЮ © (2007-02-15 09:48) [16]
> А во что он превратиться если бы пришлось функцию ltim вызывать
> как ХП?
В ХП ltrimedtable2, которая возвращала бы таблицу table2 с ltrim-нутым полем field2.
select ltim(field1) from table1
inner join ltrimedtable2 on table1.field2 = ltrimedtable2.field2 and table1.field3=ltrimedtable2.field3
where...
З.Ы. странно наблюдать ведущие пробелы в текстовых полях.
← →
Desdechado © (2007-02-15 11:37) [17]> странно наблюдать ведущие пробелы в текстовых полях.
Еще более странно пытаться строить по ним соединения как по ключевым.
← →
novill © (2007-02-15 11:54) [18]и Ltrim и запрос взяты для для примера.
← →
ЮЮ © (2007-02-15 12:12) [19]
> и Ltrim и запрос взяты для для примера.
в [16] Ltrim упоминается только в названии функции и тоже как пример, что ХП может расширить поля существующей таблицы "вычислимыми" полями, вычисленными внутри этой ХП. Твой пример не показал необходимость вычисления функции от скаляра.
З.Ы. Связывание таблиц по вычислимому полю наверняка приведет к полному сканированию таблицы. Лучше уж использлвать LEFT связь, имея вычислимое поле слева, а реальное поле - справа
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.045 c