Pesquisa Delphi + Oracle 10G

Delphi

27/11/2012

Olá amigos estou querendo fazer uma consulta no delphi 2010 com o oracle 10g, a momento nao me retorna nada, gostaria de fazer uma pesquisa fonetica no mesmo, a alguma função, para fazer isso, estou nos primeiros contatos com o Oracle, gostaria muito da ajuda dos colegas do forum,...no aguardo. até mais
Cleber Santos

Cleber Santos

Curtidas 0

Respostas

Luiz Menin

Luiz Menin

27/11/2012

Favor informar que componentes está utilizando para efetuar a consulta, versão do Delphi...
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Componente para pesquisa TOraQuery(Componentes da Suite DEVART.COM) + Delphi 2010, AGUARDO
GOSTEI 0
Luiz Menin

Luiz Menin

27/11/2012

Ok. Informe que tipo de problema ocorre e se possível o código SQL utilizado.
GOSTEI 0
Deivison Melo

Deivison Melo

27/11/2012

Seria interessante vc publicar o código fonte para que possa ser analisado por um dos colaboradores...
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Ok. Informe que tipo de problema ocorre e se possível o código SQL utilizado.


a principio meu codigo é esse,

begin
 WITH OraQuery1 DO
        BEGIN
            CLOSE;
            SQL.Clear;
            SQL.Add('SELECT * FROM CLIENTE');
            SQL.Add('where NOME_CLIENTE =:CLIENTE');
            ParamByName('CLIENTE').AsString:= cxTextEdit1.Text;
            OPEN;
        end;
end;


mas eu to querendo fazer essa consulta, mas momento não me retorna nenhum dado, e eu to querendo achar conteúdo como faz para fazer consultas SQL fonéticas...só que não consegui fazer e nem achei nenhum tutorial na internet para delphi...

se os colegas souberem...fico no aguardo
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Seria interessante vc publicar o código fonte para que possa ser analisado por um dos colaboradores...


no meu código todo ta assim, eu apenas estou fazendo os testes no mesmo, segue o codigo inteiro da consulta

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
  cxContainer, cxEdit, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint,
  dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
  dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
  dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinPumpkin, dxSkinSeven,
  dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
  dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
  dxSkinsDefaultPainters, dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint,
  dxSkinXmas2008Blue, Menus, DAScript, OraScript, DB, MemDS, DBAccess, Ora,
  cxLabel, StdCtrls, cxButtons, cxTextEdit, ExtCtrls, Grids, DBGrids, ToolWin,
  ComCtrls, DBCtrls;

type
  TForm3 = class(TForm)
    ToolBar1: TToolBar;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    cxTextEdit1: TcxTextEdit;
    cxButton1: TcxButton;
    cxLabel1: TcxLabel;
    OraSession1: TOraSession;
    OraQuery1: TOraQuery;
    OraScript1: TOraScript;
    OraDataSource1: TOraDataSource;
    OraQuery1COD_CLIENTE: TFloatField;
    OraQuery1NOME_CLIENTE: TStringField;
    OraQuery1CNPJ_CPF: TStringField;
    OraQuery1COD_FON_NOME: TStringField;
    DBNavigator1: TDBNavigator;
    procedure cxButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.cxButton1Click(Sender: TObject);
begin
 WITH OraQuery1 DO
        BEGIN
            CLOSE;
            SQL.Clear;
            SQL.Add('SELECT * FROM CLIENTE');
            SQL.Add('where NOME_CLIENTE =:CLIENTE');
            ParamByName('CLIENTE').AsString:= cxTextEdit1.Text;
            OPEN;
        end;
end;

end.



aguardo
GOSTEI 0
Luiz Menin

Luiz Menin

27/11/2012

Tente assim:

procedure TForm3.cxButton1Click(Sender: TObject);
begin
WITH OraQuery1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('SELECT * FROM CLIENTE');
SQL.Add('where NOME_CLIENTE = :CLIENTE');
ParamByName('CLIENTE').AsString:= QuotedStr(cxTextEdit1.Text);
OPEN;
end;
end;

end.
GOSTEI 0
Deivison Melo

Deivison Melo

27/11/2012

Segue script de uma função que fonetiza as pesquisas:

/****************************************************** Inicio*******************************************************/
CREATE OR REPLACE FUNCTION fnc_fonetizar(vString IN VARCHAR2) RETURN VARCHAR2 is
--
--*****************************************************************************************
--**** Criação da Função que realiza a Fonetização de Palavras - Brandão - 01/08/2008 *****
--*****************************************************************************************
--
v_termo VARCHAR2(32767);
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove todos os Acentos
FUNCTION FNC_REMOVE_ACENTOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
v_string := TRANSLATE(vString,'ÃÁÂÀÄãáàäâÉÈÊËéèêëÍÌÎÏíìîïÓÒÔÕÖóòôõöÚÙÛÜúùûüÇçÑñÝýÿ',
'AAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUUuuuuCcNnYyy');
RETURN v_string;
--
END FNC_REMOVE_ACENTOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Caracteres Estranhos
FUNCTION FNC_REMOVE_CHARS_ESTRANHOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
FOR i IN 1..256 LOOP
IF (i NOT BETWEEN 48 AND 57) AND -- Deixa os caracteres '0' a '9'
(i NOT BETWEEN 65 AND 90) AND -- Deixa os caracteres 'A' a 'Z'
(i NOT BETWEEN 97 AND 122) AND -- Deixa os caracteres 'a' a 'z'
(i NOT IN (32, 38, 95)) THEN -- Deixa os caracteres ' ', '&' e '_'
--
v_string:= REPLACE(v_string,CHR(i));
--
END IF;
END LOOP;
RETURN ltrim(rtrim(v_string));
END FNC_REMOVE_CHARS_ESTRANHOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Converte Todas as Letras em maiúsculas
FUNCTION FNC_UPPERCASE ( vString IN VARCHAR2) RETURN VARCHAR2 IS
v_String VARCHAR2(32767);
BEGIN
v_String := LTRIM(RTRIM(UPPER(vString)));
RETURN v_String;
END FNC_UPPERCASE;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Espaços duplicados
FUNCTION FNC_REMOVE_ESPACO_DUPLICADO(vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
--
WHILE INSTR(v_string,' ') != 0 LOOP
v_string := REPLACE(v_string,' ',' ');
END LOOP;
--
RETURN v_string;
--
END FNC_REMOVE_ESPACO_DUPLICADO;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Preposições
FUNCTION FNC_REMOVE_PREPOSICOES (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
--
v_string := vString;
v_string := REPLACE(v_string,' DEL ',' ');
v_string := REPLACE(v_string,' DA ',' ');
v_string := REPLACE(v_string,' DE ',' ');
v_string := REPLACE(v_string,' DI ',' ');
v_string := REPLACE(v_string,' D ',' ');
v_string := REPLACE(v_string,' DO ',' ');
v_string := REPLACE(v_string,' DU ',' ');
v_string := REPLACE(v_string,' DUS ',' ');
v_string := REPLACE(v_string,' DAS ',' ');
v_string := REPLACE(v_string,' DOS ',' ');
v_string := REPLACE(v_string,' DEU ',' ');
v_string := REPLACE(v_string,' DER ',' ');
v_string := REPLACE(v_string,' E ',' ');
v_string := REPLACE(v_string,' LA ',' ');
v_string := REPLACE(v_string,' LE ',' ');
v_string := REPLACE(v_string,' LES ',' ');
v_string := REPLACE(v_string,' LOS ',' ');
v_string := REPLACE(v_string,' VAN ',' ');
v_string := REPLACE(v_string,' VON ',' ');
v_string := REPLACE(v_string,' EL ',' ');
--
RETURN v_string;
--
END FNC_REMOVE_PREPOSICOES;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Letras Repetidas ('RR','SS')
FUNCTION FNC_REMOVE_LETRAS_IGUAIS ( vString IN VARCHAR2 ) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_posicao NUMBER;
v_montagem VARCHAR2(32767);
v_letra CHAR(1);
BEGIN
--
v_string := vString;
v_montagem := NULL;
--
-- Retirando Letras Repetidas
IF LENGTH(v_string) > 1 THEN --0*
--
v_posicao := 1;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
--
IF (nvl(SUBSTR(v_string, v_posicao + 1, 1),'#') <> v_letra) THEN
v_montagem := v_montagem||v_letra; --Montagem da Palavra sem letras Repetidas.
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
ELSE
v_montagem := v_string;
END IF;--0*
--
RETURN v_montagem;
--
END FNC_REMOVE_LETRAS_IGUAIS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Fonetiza os Termos da Ligua Portuguêsa
FUNCTION FNC_FONETIZA_TERMOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_termo_fonetizado VARCHAR2(32767);
v_letra CHAR(1);
v_letra_ant CHAR(1);
v_letra_pos CHAR(1);
v_posicao NUMBER;
--
-- auxilia na fonetizacao
-- ' ' -----> 32
-- vogal -----> A-65 , E-69 , I-73 , O-79 , U-85
-- consoante -> B-66 , C-67 , D-68 , F-70 , G-71 , H-72 , J-74 , K-75 , L-76 , M-77 ,
-- N-78 , P-80 , Q-81 , R-82 , S-83 , T-84 , V-86 , W-87 , X-88 , Y-89 , Z-90
--
-- # Verificação Dígrafos e Fonemas Consonantais.
-- # Anulação de Vogais não Fonetizada.
-- # Anulação de Termos com erro Gramatical.
--
BEGIN
--
v_string := vString;
--
v_string := REPLACE(v_string,'_',' ');
v_string := REPLACE(v_string,'&','I');
--
v_string := REPLACE(v_string,'LH' ,'L');
v_string := REPLACE(v_string,'PH' ,'F');
v_string := REPLACE(v_string,'SCH','X');
v_string := REPLACE(v_string,'SH' ,'X');
v_string := REPLACE(v_string,'CH ','K ');
v_string := REPLACE(v_string,'CH','X');
--
v_string := REPLACE(v_string,'H','');
v_string := REPLACE(v_string,'Y','I');
v_string := REPLACE(v_string,'W','V');
v_string := REPLACE(v_string,'QUI','KI');
v_string := REPLACE(v_string,'QUA','KUA');
v_string := REPLACE(v_string,'QUE','KE');
v_string := REPLACE(v_string,'Q','K');
--
IF LENGTH(v_string) > 0 THEN --0* Trabalhando com a Letra L
--
v_posicao := 1;
v_letra_pos := null;
v_termo_fonetizado := null;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
v_letra_pos := SUBSTR(v_string, (v_posicao + 1), 1); --Recupera a Letra posterior a da posição especificada
v_letra_ant := SUBSTR(v_string, (v_posicao - 1), 1); --Recupera a Letra Anterior a da posição especificada
--
IF v_letra = 'L' AND (INSTR('AEIOU',v_letra_pos) = 0 ) THEN -- Verifica se a letra é L e se depois da mesma é uma consoante
--
v_termo_fonetizado := v_termo_fonetizado||'U'; -- Altera o L por U
--
ELSE
--
v_termo_fonetizado := v_termo_fonetizado||v_letra; -- Não altera a Letra
--
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
--
v_string := v_termo_fonetizado;
--
END IF;--0*
--
-->Merge de Fonemas
--
v_string := v_string||' ';
v_string := REPLACE(v_string,'R ',' ');
v_string := REPLACE(v_string,'S ',' ');
v_string := REPLACE(v_string,'Z ',' ');
v_string := TRIM(v_string);
--
v_string := REPLACE(v_string,'IXA','IZA');
v_string := REPLACE(v_string,'IXE','IZI');
v_string := REPLACE(v_string,'IXI','IZI');
v_string := REPLACE(v_string,'IXO','IZU');
v_string := REPLACE(v_string,'IXU','IZU');
v_string := REPLACE(v_string,'EXA','IZA');
v_string := REPLACE(v_string,'EXE','IZI');
v_string := REPLACE(v_string,'EXI','IZI');
v_string := REPLACE(v_string,'EXO','IZU');
v_string := REPLACE(v_string,'EXU','IZU');
v_string := REPLACE(v_string,'AO ','M ');
v_string := REPLACE(v_string,'CS','S');
v_string := REPLACE(v_string,'RS','S');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'RC','S');
v_string := REPLACE(v_string,'CT','T');
v_string := REPLACE(v_string,'GT','T');
v_string := REPLACE(v_string,'KT','T');
v_string := REPLACE(v_string,'CK','K');
v_string := REPLACE(v_string,'CI','SI');
v_string := REPLACE(v_string,'CE','SI');
v_string := REPLACE(v_string,'C' ,'K');
v_string := REPLACE(v_string,'Z' ,'S');
v_string := REPLACE(v_string,'GUI','GI');
v_string := REPLACE(v_string,'GUA','GA');
v_string := REPLACE(v_string,'GUE','GI');
v_string := REPLACE(v_string,'GUO','GO');
v_string := REPLACE(v_string,'GE','JE');
v_string := REPLACE(v_string,'GI','JE');
v_string := REPLACE(v_string,'GLIA','LIA');
v_string := REPLACE(v_string,'GLIE','LI');
v_string := REPLACE(v_string,'GLII','LII');
v_string := REPLACE(v_string,'GLIO','LIU');
v_string := REPLACE(v_string,'GLIU','LIU');
v_string := REPLACE(v_string,'GLIN','LIM');
v_string := REPLACE(v_string,'GNA','MIA');
v_string := REPLACE(v_string,'GNE','MI');
v_string := REPLACE(v_string,'GNI','MI');
v_string := REPLACE(v_string,'GNO','MIU');
v_string := REPLACE(v_string,'GNU','MIU');
v_string := REPLACE(v_string,'NGT','MT');
v_string := REPLACE(v_string,'N','M');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'XC','S');
v_string := REPLACE(v_string,'D','B');
--
--Retirando as Vogais(E e O) -> válidas(A, I e U)
v_string := REPLACE(v_string,'E','I');
v_string := REPLACE(v_string,'O','U');
--
-- Função que Remove as Letras Repetidas após a Fonetização
v_string := FNC_REMOVE_LETRAS_IGUAIS(v_string);
--
--Retirando espaços em branco
v_string := LTRIM(RTRIM(v_string));
--
RETURN v_string;
--
END FNC_FONETIZA_TERMOS;
--
BEGIN --> Início da Fonetização da Palavra.
--
v_termo := vString;
--
--Função que Remove todos os Acentos
v_termo := FNC_REMOVE_ACENTOS(v_termo);
--
-- Função que Remove os Caracteres Estranhos
v_termo := FNC_REMOVE_CHARS_ESTRANHOS(v_termo);
--
-- Função que Remove os Espaços duplicados
v_termo := FNC_REMOVE_ESPACO_DUPLICADO(v_termo);
--
--Função que Converte Todas as Letras em maiúsculas
v_termo := FNC_UPPERCASE(v_termo);
--
-- Função que Remove as Letras Repetidas
v_termo := FNC_REMOVE_LETRAS_IGUAIS(v_termo);
--
-- Função que Remove as Preposições
v_termo := FNC_REMOVE_PREPOSICOES(v_termo);
--
-- Função que Fonetiza os Termos da Língua Portuguesa
v_termo := FNC_FONETIZA_TERMOS(v_termo);
--
RETURN v_termo;
--
END FNC_FONETIZAR;
/
/****************************************************** fim *******************************************************/

/****************************************************** Exemplo de Uso - 1 (inicio)***************************************/
select dbamv.fnc_fonetizar('emanoel')
from dual
/****************************************************** Exemplo de Uso - 1 (fim)***************************************/


/****************************************************** Exemplo de Uso - 2 (inicio)***************************************/

declare
vResultado varchar2(4000):= null;
begin
vResultado:=fnc_fonetizar('emanoel');
Dbms_Output.Put_Line('vResultado: '||vResultado);
exception
when others then
Raise_Application_Error(-20999,'Erro: '||sqlerrm);
end;

/****************************************************** Exemplo de Uso - 2 (fim)*****************************************/


Bom espero ter ajudado, qualquer anormalidade por favor me comunicar!!!

Boa sorte e bons códigos!!!
GOSTEI 0
Deivison Melo

Deivison Melo

27/11/2012

Dá uma olhada nos artigos:

http://campeche.inf.furb.br/tccs/2000-I/2000-1fabianojoserossettoap.pdf

http://campeche.inf.furb.br/tccs/2000-I/2000-1fabianojoserossettovf.pdf


Conceitos (não relacionados as informática):

http://portal.virtual.ufpb.br/biblioteca-virtual/files/pub_1291085011.pdf

http://www.abralin.org/abralin11_cdrom/artigos/Rafaela_Machado.PDF
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Segue script de uma função que fonetiza as pesquisas:

/****************************************************** Inicio*******************************************************/
CREATE OR REPLACE FUNCTION fnc_fonetizar(vString IN VARCHAR2) RETURN VARCHAR2 is
--
--*****************************************************************************************
--**** Criação da Função que realiza a Fonetização de Palavras - Brandão - 01/08/2008 *****
--*****************************************************************************************
--
v_termo VARCHAR2(32767);
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove todos os Acentos
FUNCTION FNC_REMOVE_ACENTOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
v_string := TRANSLATE(vString,'ÃÁÂÀÄãáàäâÉÈÊËéèêëÍÌÎÏíìîïÓÒÔÕÖóòôõöÚÙÛÜúùûüÇçÑñÝýÿ',
'AAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUUuuuuCcNnYyy');
RETURN v_string;
--
END FNC_REMOVE_ACENTOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Caracteres Estranhos
FUNCTION FNC_REMOVE_CHARS_ESTRANHOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
FOR i IN 1..256 LOOP
IF (i NOT BETWEEN 48 AND 57) AND -- Deixa os caracteres '0' a '9'
(i NOT BETWEEN 65 AND 90) AND -- Deixa os caracteres 'A' a 'Z'
(i NOT BETWEEN 97 AND 122) AND -- Deixa os caracteres 'a' a 'z'
(i NOT IN (32, 38, 95)) THEN -- Deixa os caracteres ' ', '&' e '_'
--
v_string:= REPLACE(v_string,CHR(i));
--
END IF;
END LOOP;
RETURN ltrim(rtrim(v_string));
END FNC_REMOVE_CHARS_ESTRANHOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Converte Todas as Letras em maiúsculas
FUNCTION FNC_UPPERCASE ( vString IN VARCHAR2) RETURN VARCHAR2 IS
v_String VARCHAR2(32767);
BEGIN
v_String := LTRIM(RTRIM(UPPER(vString)));
RETURN v_String;
END FNC_UPPERCASE;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Espaços duplicados
FUNCTION FNC_REMOVE_ESPACO_DUPLICADO(vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
--
WHILE INSTR(v_string,' ') != 0 LOOP
v_string := REPLACE(v_string,' ',' ');
END LOOP;
--
RETURN v_string;
--
END FNC_REMOVE_ESPACO_DUPLICADO;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Preposições
FUNCTION FNC_REMOVE_PREPOSICOES (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
--
v_string := vString;
v_string := REPLACE(v_string,' DEL ',' ');
v_string := REPLACE(v_string,' DA ',' ');
v_string := REPLACE(v_string,' DE ',' ');
v_string := REPLACE(v_string,' DI ',' ');
v_string := REPLACE(v_string,' D ',' ');
v_string := REPLACE(v_string,' DO ',' ');
v_string := REPLACE(v_string,' DU ',' ');
v_string := REPLACE(v_string,' DUS ',' ');
v_string := REPLACE(v_string,' DAS ',' ');
v_string := REPLACE(v_string,' DOS ',' ');
v_string := REPLACE(v_string,' DEU ',' ');
v_string := REPLACE(v_string,' DER ',' ');
v_string := REPLACE(v_string,' E ',' ');
v_string := REPLACE(v_string,' LA ',' ');
v_string := REPLACE(v_string,' LE ',' ');
v_string := REPLACE(v_string,' LES ',' ');
v_string := REPLACE(v_string,' LOS ',' ');
v_string := REPLACE(v_string,' VAN ',' ');
v_string := REPLACE(v_string,' VON ',' ');
v_string := REPLACE(v_string,' EL ',' ');
--
RETURN v_string;
--
END FNC_REMOVE_PREPOSICOES;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Letras Repetidas ('RR','SS')
FUNCTION FNC_REMOVE_LETRAS_IGUAIS ( vString IN VARCHAR2 ) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_posicao NUMBER;
v_montagem VARCHAR2(32767);
v_letra CHAR(1);
BEGIN
--
v_string := vString;
v_montagem := NULL;
--
-- Retirando Letras Repetidas
IF LENGTH(v_string) > 1 THEN --0*
--
v_posicao := 1;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
--
IF (nvl(SUBSTR(v_string, v_posicao + 1, 1),'#') <> v_letra) THEN
v_montagem := v_montagem||v_letra; --Montagem da Palavra sem letras Repetidas.
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
ELSE
v_montagem := v_string;
END IF;--0*
--
RETURN v_montagem;
--
END FNC_REMOVE_LETRAS_IGUAIS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Fonetiza os Termos da Ligua Portuguêsa
FUNCTION FNC_FONETIZA_TERMOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_termo_fonetizado VARCHAR2(32767);
v_letra CHAR(1);
v_letra_ant CHAR(1);
v_letra_pos CHAR(1);
v_posicao NUMBER;
--
-- auxilia na fonetizacao
-- ' ' -----> 32
-- vogal -----> A-65 , E-69 , I-73 , O-79 , U-85
-- consoante -> B-66 , C-67 , D-68 , F-70 , G-71 , H-72 , J-74 , K-75 , L-76 , M-77 ,
-- N-78 , P-80 , Q-81 , R-82 , S-83 , T-84 , V-86 , W-87 , X-88 , Y-89 , Z-90
--
-- # Verificação Dígrafos e Fonemas Consonantais.
-- # Anulação de Vogais não Fonetizada.
-- # Anulação de Termos com erro Gramatical.
--
BEGIN
--
v_string := vString;
--
v_string := REPLACE(v_string,'_',' ');
v_string := REPLACE(v_string,'&','I');
--
v_string := REPLACE(v_string,'LH' ,'L');
v_string := REPLACE(v_string,'PH' ,'F');
v_string := REPLACE(v_string,'SCH','X');
v_string := REPLACE(v_string,'SH' ,'X');
v_string := REPLACE(v_string,'CH ','K ');
v_string := REPLACE(v_string,'CH','X');
--
v_string := REPLACE(v_string,'H','');
v_string := REPLACE(v_string,'Y','I');
v_string := REPLACE(v_string,'W','V');
v_string := REPLACE(v_string,'QUI','KI');
v_string := REPLACE(v_string,'QUA','KUA');
v_string := REPLACE(v_string,'QUE','KE');
v_string := REPLACE(v_string,'Q','K');
--
IF LENGTH(v_string) > 0 THEN --0* Trabalhando com a Letra L
--
v_posicao := 1;
v_letra_pos := null;
v_termo_fonetizado := null;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
v_letra_pos := SUBSTR(v_string, (v_posicao + 1), 1); --Recupera a Letra posterior a da posição especificada
v_letra_ant := SUBSTR(v_string, (v_posicao - 1), 1); --Recupera a Letra Anterior a da posição especificada
--
IF v_letra = 'L' AND (INSTR('AEIOU',v_letra_pos) = 0 ) THEN -- Verifica se a letra é L e se depois da mesma é uma consoante
--
v_termo_fonetizado := v_termo_fonetizado||'U'; -- Altera o L por U
--
ELSE
--
v_termo_fonetizado := v_termo_fonetizado||v_letra; -- Não altera a Letra
--
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
--
v_string := v_termo_fonetizado;
--
END IF;--0*
--
-->Merge de Fonemas
--
v_string := v_string||' ';
v_string := REPLACE(v_string,'R ',' ');
v_string := REPLACE(v_string,'S ',' ');
v_string := REPLACE(v_string,'Z ',' ');
v_string := TRIM(v_string);
--
v_string := REPLACE(v_string,'IXA','IZA');
v_string := REPLACE(v_string,'IXE','IZI');
v_string := REPLACE(v_string,'IXI','IZI');
v_string := REPLACE(v_string,'IXO','IZU');
v_string := REPLACE(v_string,'IXU','IZU');
v_string := REPLACE(v_string,'EXA','IZA');
v_string := REPLACE(v_string,'EXE','IZI');
v_string := REPLACE(v_string,'EXI','IZI');
v_string := REPLACE(v_string,'EXO','IZU');
v_string := REPLACE(v_string,'EXU','IZU');
v_string := REPLACE(v_string,'AO ','M ');
v_string := REPLACE(v_string,'CS','S');
v_string := REPLACE(v_string,'RS','S');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'RC','S');
v_string := REPLACE(v_string,'CT','T');
v_string := REPLACE(v_string,'GT','T');
v_string := REPLACE(v_string,'KT','T');
v_string := REPLACE(v_string,'CK','K');
v_string := REPLACE(v_string,'CI','SI');
v_string := REPLACE(v_string,'CE','SI');
v_string := REPLACE(v_string,'C' ,'K');
v_string := REPLACE(v_string,'Z' ,'S');
v_string := REPLACE(v_string,'GUI','GI');
v_string := REPLACE(v_string,'GUA','GA');
v_string := REPLACE(v_string,'GUE','GI');
v_string := REPLACE(v_string,'GUO','GO');
v_string := REPLACE(v_string,'GE','JE');
v_string := REPLACE(v_string,'GI','JE');
v_string := REPLACE(v_string,'GLIA','LIA');
v_string := REPLACE(v_string,'GLIE','LI');
v_string := REPLACE(v_string,'GLII','LII');
v_string := REPLACE(v_string,'GLIO','LIU');
v_string := REPLACE(v_string,'GLIU','LIU');
v_string := REPLACE(v_string,'GLIN','LIM');
v_string := REPLACE(v_string,'GNA','MIA');
v_string := REPLACE(v_string,'GNE','MI');
v_string := REPLACE(v_string,'GNI','MI');
v_string := REPLACE(v_string,'GNO','MIU');
v_string := REPLACE(v_string,'GNU','MIU');
v_string := REPLACE(v_string,'NGT','MT');
v_string := REPLACE(v_string,'N','M');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'XC','S');
v_string := REPLACE(v_string,'D','B');
--
--Retirando as Vogais(E e O) -> válidas(A, I e U)
v_string := REPLACE(v_string,'E','I');
v_string := REPLACE(v_string,'O','U');
--
-- Função que Remove as Letras Repetidas após a Fonetização
v_string := FNC_REMOVE_LETRAS_IGUAIS(v_string);
--
--Retirando espaços em branco
v_string := LTRIM(RTRIM(v_string));
--
RETURN v_string;
--
END FNC_FONETIZA_TERMOS;
--
BEGIN --> Início da Fonetização da Palavra.
--
v_termo := vString;
--
--Função que Remove todos os Acentos
v_termo := FNC_REMOVE_ACENTOS(v_termo);
--
-- Função que Remove os Caracteres Estranhos
v_termo := FNC_REMOVE_CHARS_ESTRANHOS(v_termo);
--
-- Função que Remove os Espaços duplicados
v_termo := FNC_REMOVE_ESPACO_DUPLICADO(v_termo);
--
--Função que Converte Todas as Letras em maiúsculas
v_termo := FNC_UPPERCASE(v_termo);
--
-- Função que Remove as Letras Repetidas
v_termo := FNC_REMOVE_LETRAS_IGUAIS(v_termo);
--
-- Função que Remove as Preposições
v_termo := FNC_REMOVE_PREPOSICOES(v_termo);
--
-- Função que Fonetiza os Termos da Língua Portuguesa
v_termo := FNC_FONETIZA_TERMOS(v_termo);
--
RETURN v_termo;
--
END FNC_FONETIZAR;
/
/****************************************************** fim *******************************************************/

/****************************************************** Exemplo de Uso - 1 (inicio)***************************************/
select dbamv.fnc_fonetizar('emanoel')
from dual
/****************************************************** Exemplo de Uso - 1 (fim)***************************************/


/****************************************************** Exemplo de Uso - 2 (inicio)***************************************/

declare
vResultado varchar2(4000):= null;
begin
vResultado:=fnc_fonetizar('emanoel');
Dbms_Output.Put_Line('vResultado: '||vResultado);
exception
when others then
Raise_Application_Error(-20999,'Erro: '||sqlerrm);
end;

/****************************************************** Exemplo de Uso - 2 (fim)*****************************************/


Bom espero ter ajudado, qualquer anormalidade por favor me comunicar!!!

Boa sorte e bons códigos!!!



certo vou incluir no script do Oracle e fazer os teste,...dpois eu volto para avisar os resultados, a momento muito obrigado
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Dá uma olhada nos artigos:

http://campeche.inf.furb.br/tccs/2000-I/2000-1fabianojoserossettoap.pdf

http://campeche.inf.furb.br/tccs/2000-I/2000-1fabianojoserossettovf.pdf


Conceitos (não relacionados as informática):

http://portal.virtual.ufpb.br/biblioteca-virtual/files/pub_1291085011.pdf

http://www.abralin.org/abralin11_cdrom/artigos/Rafaela_Machado.PDF



certo vou analizar, na segunda ou terça eu retorno...abraços, a momento, obrigadão mesmo, valew.
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Tente assim:

procedure TForm3.cxButton1Click(Sender: TObject);
begin
WITH OraQuery1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('SELECT * FROM CLIENTE');
SQL.Add('where NOME_CLIENTE = :CLIENTE');
ParamByName('CLIENTE').AsString:= QuotedStr(cxTextEdit1.Text);
OPEN;
end;
end;

end.



RAPAZ, eu acho muito estranho,os codigos está tudo ok para pesquisa, e não retorna dados...estranho, !!!
GOSTEI 0
Deivison Melo

Deivison Melo

27/11/2012

ok, qualquer coisa estamos por aqui...
GOSTEI 0
Cleber Santos

Cleber Santos

27/11/2012

Segue script de uma função que fonetiza as pesquisas:

/****************************************************** Inicio*******************************************************/
CREATE OR REPLACE FUNCTION fnc_fonetizar(vString IN VARCHAR2) RETURN VARCHAR2 is
--
--*****************************************************************************************
--**** Criação da Função que realiza a Fonetização de Palavras - Brandão - 01/08/2008 *****
--*****************************************************************************************
--
v_termo VARCHAR2(32767);
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove todos os Acentos
FUNCTION FNC_REMOVE_ACENTOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
v_string := TRANSLATE(vString,'ÃÁÂÀÄãáàäâÉÈÊËéèêëÍÌÎÏíìîïÓÒÔÕÖóòôõöÚÙÛÜúùûüÇçÑñÝýÿ',
'AAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUUuuuuCcNnYyy');
RETURN v_string;
--
END FNC_REMOVE_ACENTOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Caracteres Estranhos
FUNCTION FNC_REMOVE_CHARS_ESTRANHOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
FOR i IN 1..256 LOOP
IF (i NOT BETWEEN 48 AND 57) AND -- Deixa os caracteres '0' a '9'
(i NOT BETWEEN 65 AND 90) AND -- Deixa os caracteres 'A' a 'Z'
(i NOT BETWEEN 97 AND 122) AND -- Deixa os caracteres 'a' a 'z'
(i NOT IN (32, 38, 95)) THEN -- Deixa os caracteres ' ', '&' e '_'
--
v_string:= REPLACE(v_string,CHR(i));
--
END IF;
END LOOP;
RETURN ltrim(rtrim(v_string));
END FNC_REMOVE_CHARS_ESTRANHOS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Converte Todas as Letras em maiúsculas
FUNCTION FNC_UPPERCASE ( vString IN VARCHAR2) RETURN VARCHAR2 IS
v_String VARCHAR2(32767);
BEGIN
v_String := LTRIM(RTRIM(UPPER(vString)));
RETURN v_String;
END FNC_UPPERCASE;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove os Espaços duplicados
FUNCTION FNC_REMOVE_ESPACO_DUPLICADO(vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
v_string := vString;
--
WHILE INSTR(v_string,' ') != 0 LOOP
v_string := REPLACE(v_string,' ',' ');
END LOOP;
--
RETURN v_string;
--
END FNC_REMOVE_ESPACO_DUPLICADO;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Preposições
FUNCTION FNC_REMOVE_PREPOSICOES (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
BEGIN
--
v_string := vString;
v_string := REPLACE(v_string,' DEL ',' ');
v_string := REPLACE(v_string,' DA ',' ');
v_string := REPLACE(v_string,' DE ',' ');
v_string := REPLACE(v_string,' DI ',' ');
v_string := REPLACE(v_string,' D ',' ');
v_string := REPLACE(v_string,' DO ',' ');
v_string := REPLACE(v_string,' DU ',' ');
v_string := REPLACE(v_string,' DUS ',' ');
v_string := REPLACE(v_string,' DAS ',' ');
v_string := REPLACE(v_string,' DOS ',' ');
v_string := REPLACE(v_string,' DEU ',' ');
v_string := REPLACE(v_string,' DER ',' ');
v_string := REPLACE(v_string,' E ',' ');
v_string := REPLACE(v_string,' LA ',' ');
v_string := REPLACE(v_string,' LE ',' ');
v_string := REPLACE(v_string,' LES ',' ');
v_string := REPLACE(v_string,' LOS ',' ');
v_string := REPLACE(v_string,' VAN ',' ');
v_string := REPLACE(v_string,' VON ',' ');
v_string := REPLACE(v_string,' EL ',' ');
--
RETURN v_string;
--
END FNC_REMOVE_PREPOSICOES;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Remove as Letras Repetidas ('RR','SS')
FUNCTION FNC_REMOVE_LETRAS_IGUAIS ( vString IN VARCHAR2 ) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_posicao NUMBER;
v_montagem VARCHAR2(32767);
v_letra CHAR(1);
BEGIN
--
v_string := vString;
v_montagem := NULL;
--
-- Retirando Letras Repetidas
IF LENGTH(v_string) > 1 THEN --0*
--
v_posicao := 1;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
--
IF (nvl(SUBSTR(v_string, v_posicao + 1, 1),'#') <> v_letra) THEN
v_montagem := v_montagem||v_letra; --Montagem da Palavra sem letras Repetidas.
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
ELSE
v_montagem := v_string;
END IF;--0*
--
RETURN v_montagem;
--
END FNC_REMOVE_LETRAS_IGUAIS;
--
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- Função que Fonetiza os Termos da Ligua Portuguêsa
FUNCTION FNC_FONETIZA_TERMOS (vString IN VARCHAR2) RETURN VARCHAR2 IS
v_string VARCHAR2(32767);
v_termo_fonetizado VARCHAR2(32767);
v_letra CHAR(1);
v_letra_ant CHAR(1);
v_letra_pos CHAR(1);
v_posicao NUMBER;
--
-- auxilia na fonetizacao
-- ' ' -----> 32
-- vogal -----> A-65 , E-69 , I-73 , O-79 , U-85
-- consoante -> B-66 , C-67 , D-68 , F-70 , G-71 , H-72 , J-74 , K-75 , L-76 , M-77 ,
-- N-78 , P-80 , Q-81 , R-82 , S-83 , T-84 , V-86 , W-87 , X-88 , Y-89 , Z-90
--
-- # Verificação Dígrafos e Fonemas Consonantais.
-- # Anulação de Vogais não Fonetizada.
-- # Anulação de Termos com erro Gramatical.
--
BEGIN
--
v_string := vString;
--
v_string := REPLACE(v_string,'_',' ');
v_string := REPLACE(v_string,'&','I');
--
v_string := REPLACE(v_string,'LH' ,'L');
v_string := REPLACE(v_string,'PH' ,'F');
v_string := REPLACE(v_string,'SCH','X');
v_string := REPLACE(v_string,'SH' ,'X');
v_string := REPLACE(v_string,'CH ','K ');
v_string := REPLACE(v_string,'CH','X');
--
v_string := REPLACE(v_string,'H','');
v_string := REPLACE(v_string,'Y','I');
v_string := REPLACE(v_string,'W','V');
v_string := REPLACE(v_string,'QUI','KI');
v_string := REPLACE(v_string,'QUA','KUA');
v_string := REPLACE(v_string,'QUE','KE');
v_string := REPLACE(v_string,'Q','K');
--
IF LENGTH(v_string) > 0 THEN --0* Trabalhando com a Letra L
--
v_posicao := 1;
v_letra_pos := null;
v_termo_fonetizado := null;
--
WHILE v_posicao <= LENGTH(v_string) LOOP --1* Navega na palavra letra a letra
--
v_letra := SUBSTR(v_string, v_posicao, 1); --Recupera a Letra da posição especificada
v_letra_pos := SUBSTR(v_string, (v_posicao + 1), 1); --Recupera a Letra posterior a da posição especificada
v_letra_ant := SUBSTR(v_string, (v_posicao - 1), 1); --Recupera a Letra Anterior a da posição especificada
--
IF v_letra = 'L' AND (INSTR('AEIOU',v_letra_pos) = 0 ) THEN -- Verifica se a letra é L e se depois da mesma é uma consoante
--
v_termo_fonetizado := v_termo_fonetizado||'U'; -- Altera o L por U
--
ELSE
--
v_termo_fonetizado := v_termo_fonetizado||v_letra; -- Não altera a Letra
--
END IF;
--
v_posicao := v_posicao + 1;
--
END LOOP;--1*
--
v_string := v_termo_fonetizado;
--
END IF;--0*
--
-->Merge de Fonemas
--
v_string := v_string||' ';
v_string := REPLACE(v_string,'R ',' ');
v_string := REPLACE(v_string,'S ',' ');
v_string := REPLACE(v_string,'Z ',' ');
v_string := TRIM(v_string);
--
v_string := REPLACE(v_string,'IXA','IZA');
v_string := REPLACE(v_string,'IXE','IZI');
v_string := REPLACE(v_string,'IXI','IZI');
v_string := REPLACE(v_string,'IXO','IZU');
v_string := REPLACE(v_string,'IXU','IZU');
v_string := REPLACE(v_string,'EXA','IZA');
v_string := REPLACE(v_string,'EXE','IZI');
v_string := REPLACE(v_string,'EXI','IZI');
v_string := REPLACE(v_string,'EXO','IZU');
v_string := REPLACE(v_string,'EXU','IZU');
v_string := REPLACE(v_string,'AO ','M ');
v_string := REPLACE(v_string,'CS','S');
v_string := REPLACE(v_string,'RS','S');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'RC','S');
v_string := REPLACE(v_string,'CT','T');
v_string := REPLACE(v_string,'GT','T');
v_string := REPLACE(v_string,'KT','T');
v_string := REPLACE(v_string,'CK','K');
v_string := REPLACE(v_string,'CI','SI');
v_string := REPLACE(v_string,'CE','SI');
v_string := REPLACE(v_string,'C' ,'K');
v_string := REPLACE(v_string,'Z' ,'S');
v_string := REPLACE(v_string,'GUI','GI');
v_string := REPLACE(v_string,'GUA','GA');
v_string := REPLACE(v_string,'GUE','GI');
v_string := REPLACE(v_string,'GUO','GO');
v_string := REPLACE(v_string,'GE','JE');
v_string := REPLACE(v_string,'GI','JE');
v_string := REPLACE(v_string,'GLIA','LIA');
v_string := REPLACE(v_string,'GLIE','LI');
v_string := REPLACE(v_string,'GLII','LII');
v_string := REPLACE(v_string,'GLIO','LIU');
v_string := REPLACE(v_string,'GLIU','LIU');
v_string := REPLACE(v_string,'GLIN','LIM');
v_string := REPLACE(v_string,'GNA','MIA');
v_string := REPLACE(v_string,'GNE','MI');
v_string := REPLACE(v_string,'GNI','MI');
v_string := REPLACE(v_string,'GNO','MIU');
v_string := REPLACE(v_string,'GNU','MIU');
v_string := REPLACE(v_string,'NGT','MT');
v_string := REPLACE(v_string,'N','M');
v_string := REPLACE(v_string,'TS','S');
v_string := REPLACE(v_string,'XC','S');
v_string := REPLACE(v_string,'D','B');
--
--Retirando as Vogais(E e O) -> válidas(A, I e U)
v_string := REPLACE(v_string,'E','I');
v_string := REPLACE(v_string,'O','U');
--
-- Função que Remove as Letras Repetidas após a Fonetização
v_string := FNC_REMOVE_LETRAS_IGUAIS(v_string);
--
--Retirando espaços em branco
v_string := LTRIM(RTRIM(v_string));
--
RETURN v_string;
--
END FNC_FONETIZA_TERMOS;
--
BEGIN --> Início da Fonetização da Palavra.
--
v_termo := vString;
--
--Função que Remove todos os Acentos
v_termo := FNC_REMOVE_ACENTOS(v_termo);
--
-- Função que Remove os Caracteres Estranhos
v_termo := FNC_REMOVE_CHARS_ESTRANHOS(v_termo);
--
-- Função que Remove os Espaços duplicados
v_termo := FNC_REMOVE_ESPACO_DUPLICADO(v_termo);
--
--Função que Converte Todas as Letras em maiúsculas
v_termo := FNC_UPPERCASE(v_termo);
--
-- Função que Remove as Letras Repetidas
v_termo := FNC_REMOVE_LETRAS_IGUAIS(v_termo);
--
-- Função que Remove as Preposições
v_termo := FNC_REMOVE_PREPOSICOES(v_termo);
--
-- Função que Fonetiza os Termos da Língua Portuguesa
v_termo := FNC_FONETIZA_TERMOS(v_termo);
--
RETURN v_termo;
--
END FNC_FONETIZAR;
/
/****************************************************** fim *******************************************************/

/****************************************************** Exemplo de Uso - 1 (inicio)***************************************/
select dbamv.fnc_fonetizar('emanoel')
from dual
/****************************************************** Exemplo de Uso - 1 (fim)***************************************/


/****************************************************** Exemplo de Uso - 2 (inicio)***************************************/

declare
vResultado varchar2(4000):= null;
begin
vResultado:=fnc_fonetizar('emanoel');
Dbms_Output.Put_Line('vResultado: '||vResultado);
exception
when others then
Raise_Application_Error(-20999,'Erro: '||sqlerrm);
end;

/****************************************************** Exemplo de Uso - 2 (fim)*****************************************/


Bom espero ter ajudado, qualquer anormalidade por favor me comunicar!!!

Boa sorte e bons códigos!!!



A Função foi criada com sucesso no ORACLE 10G, agora para retornar os dados no delphi eu fiz assim desta forma

 WITH OraTable1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('SELECT * FROM CLIENTE');
SQL.Add('where FNC_FONETIZAR(NOME_CLIENTE) = FNC_FONETIZAR(:CLIENTE)');
ParamByName('CLIENTE').AsString:= QuotedStr('%'+cxTextEdit1.Text+'%');
OPEN;

END;



e na hora que peço para consultar ele me fala o seguinte

ORA-03113:fim de arquivo no canal de comunicação.


é dessa forma que faz para consultar no delphi para utilizar essa função FONETIZAR ?
GOSTEI 0
POSTAR