GARANTIR DESCONTO

Fórum dúvida ao criar uma stored procedure com udf e exception.. #54899

23/01/2006

0

Fiz procedimentos bem parecidos com os descritos acima, mas estou com problemas.

Estou utilizando o firebird e o ibexpert.

Tenho uma dll criada para consulta do tipo soundex.
ela está declarada na udf do ibexpert, conforme a sql abaixo.

A primeira UDF é chamada ´FONETICA´:

DECLARE EXTERNAL FUNCTION FONETICA
CSTRING(254)
RETURNS CSTRING(254)
ENTRY_POINT ´fonetica´ MODULE_NAME ´ZCIFonetica.dll´

A segunda UDF é chamada de ´FONETICALIKE´:

DECLARE EXTERNAL FUNCTION FONETICALIKE
CSTRING(254)
RETURNS CSTRING(254)
ENTRY_POINT ´foneticaLike´ MODULE_NAME ´ZCIFonetica.dll´



Estou tentando fazer uma stored procedure no ibexpert, para testar
tais funções, como o código abaixo:

SET TERM ^ ;

CREATE PROCEDURE PROCURACLIENTES (
NOME_IN VARCHAR(50))
RETURNS (
CODIGO INTEGER,
NOME VARCHAR(50))
AS
BEGIN
FOR SELECT CODIGO,
NOME
FROM MEMBROS
WHERE (NOME = foneticalike(:nome_in))
INTO :CODIGO,
:NOME
DO
BEGIN
SUSPEND;
END
END^

SET TERM ; ^


No ibexpert mando compilar ela dá sucesso na compilação.
Mas quando dou commit para registrar a procedure, ele dá o seguinte erro:

Invalid Token.
Invalid request BLR at offset 86.
function FONETICALIKE is not defined.
modulo name or entrypoint could not be found.

Changes will be rolled back...


Qual a sugestão que vocês me dão para resolver este problema ?


Thiagopedro

Thiagopedro

Responder

Posts

23/01/2006

Thomaz_prg

Amigo, se não estou enganado, você precisa apenas da UDF FONETICA.
E para utilizar, seria assim:

SET TERM ^ ; 

CREATE PROCEDURE PROCURACLIENTES (NOME_IN VARCHAR(50)) 
RETURNS (CODIGO INTEGER, NOME VARCHAR(50)) 
AS 
BEGIN 
  FOR SELECT CODIGO, NOME FROM MEMBROS 
  WHERE (fonetica(NOME) = fonetica(:nome_in))  INTO :CODIGO, :NOME 
  DO 
    SUSPEND; 
END^ 

SET TERM ; ^ 


Um outro ítem para agilizar a pesquisa, é criar um índice, usando FONETICA(nome) como chave.

Apenas uma observação, procure postar na área relativa ao Firebird, pois seu outro post foi movido pra lá.


Responder

Gostei + 0

23/01/2006

Thiagopedro

Amigo desde já agradeço a atenção ao meu tópico sobre a stored procedure com udf.

Queria só mais uma ajudinha.

Criei a procedure certin conforme vc postou sem problemas.
Fui criar um índice conforme vc recomendou, mas qdo no ibexpert compilei deu erro.

CREATE INDEX MEMBROS_IDX1
ON MEMBROS (fonetica(nome))


erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.


Responder

Gostei + 0

23/01/2006

Thiagopedro

Desculpe amigos
No post anterior eu não tinha dado o commit na criação da procedure
depois que dei o commit deu o seguinte erro no ibexpert:

Invalid token.
invalid request BLR at offset 79.
function FONETICA is not defined.
module name or entrypoint could not be found.


Responder

Gostei + 0

09/02/2006

Rtava

Sobre Exception, dê uma olhada neste tópico:
http://forum.clubedelphi.net/viewtopic.php?t=73629


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar