Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   substr??? (https://www.clubdelphi.com/foros/showthread.php?t=16765)

subzero 10-12-2004 17:19:43

substr???
 
Un saludo a todos en el foro.

Alguien podría ayudarme ya que estoy tratando de utilizar la función substr en interbase 6.0 pero no funciona, ya la adicione a mi base de datos desde el archivo de text ib_udf.txt y aparece, pero resulta que cuando estoy generando una consulta simple

SELECT SUBSTR(CAMPO,1,2)
FROM TABLA


me aparece el siguiente error:

fmSQLEditor.Query:
Invalid token.
invalid request BLR at offset 63.
function SUBSTR is not defined.
module name or entrypoint could not be found. :confused:

Si pueden colaborarme se los agradesco

marcoszorrilla 10-12-2004 19:48:48

Aunque en estos momentos no tengo documentación a mano, creo recordar que la función a utilizar para estos casos es Extract.

Un Saludo.

subzero 10-12-2004 21:05:44

:confused: No reconoce el extrae???

subzero 10-12-2004 23:58:55

Si alguien sabe un método o una UDf que me pueda extraer una porción de texto de un campo varchar en una consulta se lo agradeceria :(

Al González 11-12-2004 05:47:08

¡Hola!

Yo así lo solucioné:

http://www.clubdelphi.com/foros/show...indows+reseteo

Espero esto sea de utilidad, seguimos en contacto.

Al González :).
Se busca apartamento con damisela incluída.

subzero 13-12-2004 16:41:18

Hola soy yo nuevamente aun no he encontrado la manera de hacer la extración de texto en interbase, probe con la ayuda anterior pero persiste el mismo error


:eek: Help...Help...Help...Help :eek:

subzero 13-12-2004 22:41:22

Por fin pude solucionarlo... al momento de hacer el llamamiento de la función la declare de la siguiente forma:


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

El número de "32767" es cambiado para aumentar la longitud de almacenamiento

Quizas, a alquien le pueda servir o a mí mismo algun día :D

Y a todos gracias por interezarse :)

Al González 14-12-2004 05:54:48

¡Hola a todos!


Cita:

Empezado por subzero
..."32767"...para aumentar la longitud...

Tengo una duda respecto a ésto último. He notado que la declaración predeterminada de varias funciones con parámetros CString es de longitud 80, cuando la misma documentación aclara que ésta longitud puede aumentarse.

No estoy seguro, pero tengo la sensación de que el servidor Firebird se encarga de reservar un bloque de memoria de longitud + 1 bytes, para convertir parámetros VarChar o Char a CString antes de llamar a la función UDF.

Si esto es así, significa que entre mayor sea la longitud especificada, mayor es el consumo de memoria (y tiempo) del servidor Firebird al llamar a una UDF. Y que por ello, la longitud predeterminada viene muchas veces con un valor ligero, como 80.

Como les comento, esto es solo la impresión que tengo del por qué de la diferencia entre las longitudes aludidas.

Les agradecería cualquier aclaración al respecto.

Al González.

El principal ingrediente de una persona son los brazos que la rodean, incluyendo los suyos propios.


La franja horaria es GMT +2. Ahora son las 19:44:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi