Fórum dúvida ao criar uma stored procedure com udf e exception.. #54899
23/01/2006
0
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
Curtir tópico
+ 0Posts
23/01/2006
Thomaz_prg
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á.
Gostei + 0
23/01/2006
Thiagopedro
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.
Gostei + 0
23/01/2006
Thiagopedro
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.
Gostei + 0
09/02/2006
Rtava
http://forum.clubedelphi.net/viewtopic.php?t=73629
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)