Fórum Pesquisa Delphi + Oracle 10G #429864
27/11/2012
0
Cleber Santos
Curtir tópico
+ 0Posts
27/11/2012
Luiz Menin
Gostei + 0
27/11/2012
Cleber Santos
Gostei + 0
28/11/2012
Luiz Menin
Gostei + 0
28/11/2012
Deivison Melo
Gostei + 0
28/11/2012
Cleber Santos
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
28/11/2012
Cleber Santos
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
28/11/2012
Luiz Menin
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
28/11/2012
Deivison Melo
/****************************************************** 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
28/11/2012
Deivison Melo
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
28/11/2012
Cleber Santos
/****************************************************** 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
28/11/2012
Cleber Santos
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
28/11/2012
Cleber Santos
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
28/11/2012
Deivison Melo
Gostei + 0
29/11/2012
Cleber Santos
/****************************************************** 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
Clique aqui para fazer login e interagir na Comunidade :)