PDA

Ver la Versión Completa : UDF access y STORED PROCEDURES


papulo
01-08-2007, 12:06:20
Estoy itentando crear uno STORED PROCEDURE pero siempre me da un error 804 al compilar, no reconoce las funciones.

El código es este:
SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE (
chaar char(10))
returns (
num integer)
as
begin
num=abs(chaar);
/* Procedure Text */
suspend;
end^

SET TERM ; ^


Y la parte del acceso a los UDF en firebird.conf lo he dejado así.

El path del firebird es:

c:\Program Files\Firebird\Firebird_1_5\


# ----------------------------
# External Function (UDF) Paths/Directories
#
# Type: string (special format)
#
UdfAccess = Restrict UDF;


Pero siempre me devuelve el mismo error al compilar:


An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
ABS.


y he sacado de aquí (http://www.alberton.info/firebird_cheat_sheet.html) las funciones del UDF de firebird.

Seré breve, SOCORRO. No se que pasa, leches, pero seguro que es alguna gilipollez que ahora mismo no soy capaz de ver.

Saludos.

Casimiro Notevi
01-08-2007, 12:45:21
primero ejecuta esto:

DECLARE EXTERNAL FUNCTION abs
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';

y luego esto:

CREATE PROCEDURE AAAAAAAAA (
chaar char(10))
returns (
num integer)
as
begin
num=abs(chaar);
/* Procedure Text */
suspend;
end

papulo
01-08-2007, 12:47:00
¿Puedes explicar el por que y para que?

Casimiro Notevi
01-08-2007, 12:51:34
Me limito a coger del fuente "ib_udf.sql" (o donde esté la función que necesite) la función que me interese, la ejecuto en el "sql editor" del ibexpert, y nada más, así sé seguro que funcionará. :o

papulo
01-08-2007, 12:53:21
¿Puedes conectarte a Jabber un segundín y lo hablamos o vas muy de culo?

Gracias por las molestias de todas formas.

EDITO: ¿No hay forma de incluir todas las funciones de la librería en vez de una a una?

papulo
01-08-2007, 13:10:34
¡¡No me has dado ni 20 segundos!!

Me has hablado en el 47 y te he respondido en el 59, que estaba leyendo :confused:

Casimiro Notevi
01-08-2007, 14:03:15
jeje, siempre (procuro) estar para los amigos :)

rastafarey
01-08-2007, 18:31:11
Si el directorio donde udf hay unos archivos .sql estos contiene el sql para incluir todas las funciones.

ASAPLTDA
24-08-2007, 16:23:27
Apreciados Foristas buenos dias

EL problema que no encuentra las funciones las estoy viviendo para firebird 2.01, He revisado varias cosas pero sigo sin poder usar las funciones y especificamente substr(campo,1,15)
el mensaje que retorna es :
Invalid token.
invalid request BLR at offset 16.
function SUBSTR is not defined.
module name or entrypoint could not be found.
- Registre las funciones con el scrip
No se si que no he entrndido como configurar el archivo firebird.conf

Logro usted poner a funcionar las UDF y como lo logro
Gracias

jhonny
24-08-2007, 16:45:48
Apreciados Foristas buenos dias

EL problema que no encuentra las funciones las estoy viviendo para firebird 2.01, He revisado varias cosas pero sigo sin poder usar las funciones y especificamente substr(campo,1,15)
el mensaje que retorna es :
Invalid token.
invalid request BLR at offset 16.
function SUBSTR is not defined.
module name or entrypoint could not be found.
- Registre las funciones con el scrip
No se si que no he entrndido como configurar el archivo firebird.conf

Logro usted poner a funcionar las UDF y como lo logro
Gracias

El script para activar la función SubStr es este:


DECLARE EXTERNAL FUNCTION substr
CSTRING(255), SMALLINT, SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';


Verifica si es ese el que estas usando y que en la linea #UdfAccess = Restrict UDF del archivo firebird.conf tenga el signo Sharp, almoadilla, numero o como quieras llamarlo, mejor dicho este >>> #, antepuesto a UdfAccess = Restrict UDF para indicarle que no vas a restringir las UDFs.

Espero que mi comentario te haya servido de algo ;).

ASAPLTDA
24-08-2007, 18:53:24
Apreciados Foristas
Gracias por su respuestas la solucion que encontre al problema que el sistema no reconocia las UDF se debe a la configuracion del sistema
archivo FIREBIRD.CONF , en la configuracion de las UDF lo deje asi y funciono

UdfAccess = Restrict C:\Program Files\Firebird\Firebird_2_0\UDF\

No me funcionaba porque falta el ultimo \ :)

jhonny
24-08-2007, 18:57:31
se debe a la configuracion del sistema
archivo FIREBIRD.CONF , en la configuracion de las UDF lo deje asi y funciono

UdfAccess = Restrict C:\Program Files\Firebird\Firebird_2_0\UDF\

No me funcionaba porque falta el ultimo \ :)

Bueno, yo o tengo como viene por defecto

#UdfAccess = Restrict UDF

Y me funciona bien, ¿A vos no?. :)