全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1262
推到 Plurk!
推到 Facebook!

InterBase User define function

尚未結案
mtliang
一般會員


發表:5
回覆:7
積分:2
註冊:2003-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-14 11:54:40 IP:61.30.xxx.xxx 未訂閱
請問先進: InterBase安裝目錄 USF\下附有一 ib_usf.dll 使用者自定函數,請問如何掛上(安裝),謝謝
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-14 14:36:47 IP:218.162.xxx.xxx 未訂閱
引言: 請問先進: InterBase安裝目錄 USF\下附有一 ib_usf.dll 使用者自定函數,請問如何掛上(安裝),謝謝
用到那個UDF就把那個UDF的宣告貼在你使用的資料庫工具中的SQL EDIT中,然後執行,以後就可以使用了。下列是FireBird 1.5附的,Interbase的應該也一樣。 /* * The contents of this file are subject to the Interbase Public * License Version 1.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy * of the License at http://www.Inprise.com/IPL.html * * Software distributed under the License is distributed on an * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express * or implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code was created by Inprise Corporation * and its predecessors. Portions created by Inprise Corporation are * Copyright (C) Inprise Corporation. * * All Rights Reserved. * Contributor(s): ______________________________________. * $Id: ib_udf.sql,v 1.4 2003/02/04 17:27:38 dimitr Exp $ * Revision 1.2 2000/11/28 06:47:52 fsg * Changed declaration of ascii_char in ib_udf.sql * to get correct result as proposed by Claudio Valderrama * 2001.5.19 Claudio Valderrama, add the declaration of alternative * substrlen function to handle string,start,length instead. * */ /***************************************** * * a b s * ***************************************** * * Functional description: * Returns the absolute value of a * number. * *****************************************/ DECLARE EXTERNAL FUNCTION abs DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf'; /***************************************** * * a c o s * ***************************************** * * Functional description: * Returns the arccosine of a number * between -1 and 1, if the number is * out of bounds it returns NaN, as handled * by the _matherr routine. * *****************************************/ DECLARE EXTERNAL FUNCTION acos DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_acos' MODULE_NAME 'ib_udf'; /***************************************** * * a s c i i _ c h a r * ***************************************** * * Functional description: * Returns the ASCII character corresponding * with the value passed in. * *****************************************/ DECLARE EXTERNAL FUNCTION ascii_char INTEGER RETURNS CSTRING(1) FREE_IT ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'; /***************************************** * * a s c i i _ v a l * ***************************************** * * Functional description: * Returns the ascii value of the character * passed in. * *****************************************/ DECLARE EXTERNAL FUNCTION ascii_val CHAR(1) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf'; /***************************************** * * a s i n * ***************************************** * * Functional description: * Returns the arcsin of a number between * -1 and 1, if the number is out of * range NaN is returned. * *****************************************/ DECLARE EXTERNAL FUNCTION asin DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_asin' MODULE_NAME 'ib_udf'; /***************************************** * * a t a n * ***************************************** * * Functional description: * Returns the arctangent of a number. * * *****************************************/ DECLARE EXTERNAL FUNCTION atan DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_atan' MODULE_NAME 'ib_udf'; /***************************************** * * a t a n 2 * ***************************************** * * Functional description: * Returns the arctangent of the * first param / the second param. * *****************************************/ DECLARE EXTERNAL FUNCTION atan2 DOUBLE PRECISION, DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_atan2' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ a n d * ***************************************** * * Functional description: * Returns the result of a binary AND * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_and INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ o r * ***************************************** * * Functional description: * Returns the result of a binary OR * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_or INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf'; /***************************************** * * b i n _ x o r * ***************************************** * * Functional description: * Returns the result of a binary XOR * operation performed on the two numbers. * *****************************************/ DECLARE EXTERNAL FUNCTION bin_xor INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_bin_xor' MODULE_NAME 'ib_udf'; /***************************************** * * c e i l i n g * ***************************************** * * Functional description: * Returns a double value representing * the smallest integer that is greater * than or equal to the input value. * *****************************************/ DECLARE EXTERNAL FUNCTION ceiling DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_ceiling' MODULE_NAME 'ib_udf'; /***************************************** * * c o s * ***************************************** * * Functional description: * The cos function returns the cosine * of x. If x is greater than or equal * to 263, or less than or equal to -263, * a loss of significance in the result * of a call to cos occurs, in which case * the function generates a _TLOSS error * and returns an indefinite (same as a * quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION cos DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cos' MODULE_NAME 'ib_udf'; /***************************************** * * c o s h * ***************************************** * * Functional description: * The cosh function returns the hyperbolic cosine * of x. If x is greater than or equal * to 263, or less than or equal to -263, * a loss of significance in the result * of a call to cos occurs, in which case * the function generates a _TLOSS error * and returns an indefinite (same as a * quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION cosh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cosh' MODULE_NAME 'ib_udf'; /***************************************** * * c o t * ***************************************** * * Functional description: * Returns 1 over the tangent of the * input parameter. * *****************************************/ DECLARE EXTERNAL FUNCTION cot DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_cot' MODULE_NAME 'ib_udf'; /***************************************** * * d i v * ***************************************** * * Functional description: * Returns the quotient part of the division * of the two input parameters. * *****************************************/ DECLARE EXTERNAL FUNCTION div INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf'; /***************************************** * * f l o o r * ***************************************** * * Functional description: * Returns a floating-point value * representing the largest integer that * is less than or equal to x * *****************************************/ DECLARE EXTERNAL FUNCTION floor DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_floor' MODULE_NAME 'ib_udf'; /***************************************** * * l n * ***************************************** * * Functional description: * Returns the natural log of a number. * *****************************************/ DECLARE EXTERNAL FUNCTION ln DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_ln' MODULE_NAME 'ib_udf'; /***************************************** * * l o g * ***************************************** * * Functional description: * log (x,y) returns the logarithm * base x of y. * *****************************************/ DECLARE EXTERNAL FUNCTION log DOUBLE PRECISION, DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_log' MODULE_NAME 'ib_udf'; /***************************************** * * l o g 1 0 * ***************************************** * * Functional description: * Returns the logarithm base 10 of the * input parameter. * *****************************************/ DECLARE EXTERNAL FUNCTION log10 DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_log10' MODULE_NAME 'ib_udf'; /***************************************** * * l o w e r * ***************************************** * * Functional description: * Returns the input string into lower * case characters. Note: This function * will not work with international and * non-ascii characters. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION lower CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf'; /***************************************** * * l p a d * ***************************************** * * Functional description: * Appends the given character to beginning * of the input string until length of the result * string becomes equal to the given number. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION lpad CSTRING(80), INTEGER, CSTRING(1) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'; /***************************************** * * l t r i m * ***************************************** * * Functional description: * Removes leading spaces from the input * string. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION ltrim CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf'; /***************************************** * * m o d * ***************************************** * * Functional description: * Returns the remainder part of the * division of the two input parameters. * *****************************************/ DECLARE EXTERNAL FUNCTION mod INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; /***************************************** * * p i * ***************************************** * * Functional description: * Returns the value of pi = 3.1459... * *****************************************/ DECLARE EXTERNAL FUNCTION pi RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_pi' MODULE_NAME 'ib_udf'; /***************************************** * * r a n d * ***************************************** * * Functional description: * Returns a random number between 0 * and 1. Note the random number * generator is seeded using the current * time. * *****************************************/ DECLARE EXTERNAL FUNCTION rand RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; /***************************************** * * r p a d * ***************************************** * * Functional description: * Appends the given character to end * of the input string until length of the result * string becomes equal to the given number. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION rpad CSTRING(80), INTEGER, CSTRING(1) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_rpad' MODULE_NAME 'ib_udf'; /***************************************** * * r t r i m * ***************************************** * * Functional description: * Removes trailing spaces from the input * string. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION rtrim CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf'; /***************************************** * * s i g n * ***************************************** * * Functional description: * Returns 1, 0, or -1 depending on whether * the input value is positive, zero or * negative, respectively. * *****************************************/ DECLARE EXTERNAL FUNCTION sign DOUBLE PRECISION RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_sign' MODULE_NAME 'ib_udf'; /***************************************** * * s i n * ***************************************** * * Functional description: * Returns the sine of x. If x is greater * than or equal to 263, or less than or * equal to -263, a loss of significance * in the result occurs, in which case the * function generates a _TLOSS error and * returns an indefinite (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION sin DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sin' MODULE_NAME 'ib_udf'; /***************************************** * * s i n h * ***************************************** * * Functional description: * Returns the hyperbolic sine of x. If x is greater * than or equal to 263, or less than or * equal to -263, a loss of significance * in the result occurs, in which case the * function generates a _TLOSS error and * returns an indefinite (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION sinh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sinh' MODULE_NAME 'ib_udf'; /***************************************** * * s q r t * ***************************************** * * Functional description: * Returns the square root of a number. * *****************************************/ DECLARE EXTERNAL FUNCTION sqrt DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_sqrt' MODULE_NAME 'ib_udf'; /***************************************** * * s u b s t r * ***************************************** * * Functional description: * substr(s,m,n) returns the substring * of s which starts at position m and * ending at position n. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * Change by Claudio Valderrama: when n>length(s), * the result will be the original string instead * of NULL as it was originally designed. * *****************************************/ DECLARE EXTERNAL FUNCTION substr CSTRING(80), SMALLINT, SMALLINT RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf'; /***************************************** * * s u b s t r l e n * ***************************************** * * Functional description: * substr(s,i,l) returns the substring * of s which starts at position i and * ends at position i l-1, being l the length. * Note: This function is NOT limited to * receiving and returning only 80 characters, * rather, it can use as long as 32767 * characters which is the limit on an * INTERBASE character string. * *****************************************/ DECLARE EXTERNAL FUNCTION substrlen CSTRING(80), SMALLINT, SMALLINT RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf'; /***************************************** * * s t r l e n * ***************************************** * * Functional description: * Returns the length of a given string. * *****************************************/ DECLARE EXTERNAL FUNCTION strlen CSTRING(32767) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf'; /***************************************** * * t a n * ***************************************** * * Functional description: * Returns the tangent of x. If x is * greater than or equal to 263, or less * than or equal to -263, a loss of * significance in the result occurs, in * which case the function generates a * _TLOSS error and returns an indefinite * (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION tan DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_tan' MODULE_NAME 'ib_udf'; /***************************************** * * t a n h * ***************************************** * * Functional description: * Returns the tangent of x. If x is * greater than or equal to 263, or less * than or equal to -263, a loss of * significance in the result occurs, in * which case the function generates a * _TLOSS error and returns an indefinite * (same as a quiet NaN). * *****************************************/ DECLARE EXTERNAL FUNCTION tanh DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_tanh' MODULE_NAME 'ib_udf';
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-14 14:41:54 IP:218.162.xxx.xxx 未訂閱
引言: 請問先進: InterBase安裝目錄 USF\下附有一 ib_usf.dll 使用者自定函數,請問如何掛上(安裝),謝謝
以前舊版的(6.0)是 UDF\ib_udf.dll, 不知是否你打錯,或是新版的InterBase已改為ib_usf.dll ,如果是改為ib_usf.dll的話,則 MODULE_NAME 也要改為 'ib_usf'
mtliang
一般會員


發表:5
回覆:7
積分:2
註冊:2003-05-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-14 16:45:45 IP:61.30.xxx.xxx 未訂閱
謝謝各位的回應,之前就有按chiny所說方法將自定函數宣告加入,IBConsole 內可看到,但下select 時會出現 module name or entrypoint could not found 錯誤訊息,另外 dll 應為 ib_udf.dll 沒錯,我打錯了.我用的 ib 6.5 謝謝
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-14 19:03:21 IP:218.162.xxx.xxx 未訂閱
引言: 謝謝各位的回應,之前就有按chiny所說方法將自定函數宣告加入,IBConsole 內可看到,但下select 時會出現 module name or entrypoint could not found 錯誤訊息,另外 dll 應為 ib_udf.dll 沒錯,我打錯了.我用的 ib 6.5 謝謝
應該是這樣就可以用了,可能是用在不能用的位罝吧,可否把sql語法貼出看看,如果真是這個問題的話,可能要用新版的或firbird(我不確定,我只用過interbase 6.0 與firebird)
mtliang
一般會員


發表:5
回覆:7
積分:2
註冊:2003-05-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-15 10:12:22 IP:61.30.xxx.xxx 未訂閱
chinyu 兄:sql 如下 select substr(menu_na,1,10) from amenu
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-15 20:29:16 IP:218.170.xxx.xxx 未訂閱
引言: chinyu 兄:sql 如下 select substr(menu_na,1,10) from amenu
mtliang兄: 最近剛好也有用這個udf,所用宣告如下:
DECLARE EXTERNAL FUNCTION SUBSTR
    CSTRING(80),
    SMALLINT,
    SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf'
我使用下列sql語法都正常執行沒有問題,這我就想不出是什麼問題了。 select substr(itemno,1,5) from item
系統時間:2024-06-29 19:49:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!