Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.108 c
2-1176817310
Gentos
2007-04-17 17:41
2007.05.06
DBImage1: TDBImage; - с какой компонентой проще всего работать ?


2-1176796522
Gentos
2007-04-17 11:55
2007.05.06
Oracle8 - cLOB


2-1176815726
ppcumax
2007-04-17 17:15
2007.05.06
Как удалить первую строку из Memo?


3-1171534913
dzhagr1
2007-02-15 13:21
2007.05.06
Связь таблиц в database desktop


15-1176110363
alien1769
2007-04-09 13:19
2007.05.06
Опять про флешку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский