Cómo puedo hacer más eficiente esta función
Publicado por Ado (1 intervención) el 23/02/2017 19:45:30
Buenos días,
Les dejo el script de esta función super básica, en la cual, recibiendo dos parámetros, busco las palabras a traducir en la tabla test_translator, en caso de no encontrar la palabra buscada la retorno con el mismo valor pero entre asteriscos.....
A la espera de sus prontas respuestas.
Gracias anticipadas.
Les dejo el script de esta función super básica, en la cual, recibiendo dos parámetros, busco las palabras a traducir en la tabla test_translator, en caso de no encontrar la palabra buscada la retorno con el mismo valor pero entre asteriscos.....
A la espera de sus prontas respuestas.
Gracias anticipadas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
SET SERVEROUTPUT ON;
CREATE TABLE TEST_TRANSLATOR
(INGLES VARCHAR2(100),
ESPANOL VARCHAR2(100)
);
INSERT INTO TEST_TRANSLATOR VALUES('YO' ,'I' );
INSERT INTO TEST_TRANSLATOR VALUES('SOY' ,'AM' );
INSERT INTO TEST_TRANSLATOR VALUES('ES' ,'IS' );
INSERT INTO TEST_TRANSLATOR VALUES('QUE' ,'WHAT' );
INSERT INTO TEST_TRANSLATOR VALUES('CUANDO' ,'WHEN' );
INSERT INTO TEST_TRANSLATOR VALUES('PORQUE' ,'WHY' );
INSERT INTO TEST_TRANSLATOR VALUES('COMO' ,'HOW' );
INSERT INTO TEST_TRANSLATOR VALUES('DONDE' ,'WHERE' );
INSERT INTO TEST_TRANSLATOR VALUES('TU' ,'YOU' );
INSERT INTO TEST_TRANSLATOR VALUES('EL' ,'HE' );
INSERT INTO TEST_TRANSLATOR VALUES('ELLA' ,'SHE' );
INSERT INTO TEST_TRANSLATOR VALUES('SON' ,'ARE' );
INSERT INTO TEST_TRANSLATOR VALUES('SI' ,'YES' );
INSERT INTO TEST_TRANSLATOR VALUES('NO' ,'NO' );
INSERT INTO TEST_TRANSLATOR VALUES('MUSICA' ,'MUSIC' );
INSERT INTO TEST_TRANSLATOR VALUES('VIDA' ,'LIFE' );
INSERT INTO TEST_TRANSLATOR VALUES('BUENO' ,'GOOD' );
INSERT INTO TEST_TRANSLATOR VALUES('MALO' ,'BAD' );
INSERT INTO TEST_TRANSLATOR VALUES('DIA' ,'DAY' );
INSERT INTO TEST_TRANSLATOR VALUES('NOCHE' ,'NIGHT' );
INSERT INTO TEST_TRANSLATOR VALUES('TARDE' ,'AFTERNOON');
INSERT INTO TEST_TRANSLATOR VALUES('ADIOS' ,'GODDBYE' );
INSERT INTO TEST_TRANSLATOR VALUES('BIENVENIDO' ,'WELCOME' );
INSERT INTO TEST_TRANSLATOR VALUES('TENER' ,'HAVE' );
INSERT INTO TEST_TRANSLATOR VALUES('EN' ,'IN' );
INSERT INTO TEST_TRANSLATOR VALUES('FUERA' ,'OUT' );
INSERT INTO TEST_TRANSLATOR VALUES('NOSOTROS' ,'WE' );
INSERT INTO TEST_TRANSLATOR VALUES('APRENDER' ,'LEARN' );
INSERT INTO TEST_TRANSLATOR VALUES('PERDER' ,'LOSE' );
INSERT INTO TEST_TRANSLATOR VALUES('GANAR' ,'WIN' );
CREATE OR REPLACE
FUNCTION FN_TRADUCTOR (PALABRA IN OUT VARCHAR2, IDIOMA_FIN CHAR)
RETURN VARCHAR2 IS
RESUL NUMBER := 1;
RESUL_ANTE NUMBER;
RETORNO2 VARCHAR2(100);
RETORNO VARCHAR2(200) := '';
BEGIN
PALABRA := PALABRA||' ';
LOOP
BEGIN
RESUL_ANTE := RESUL;
RESUL := INSTR(PALABRA,' ', RESUL_ANTE);
IF RESUL = 0 THEN
EXIT;
END IF;
RESUL := RESUL + 1;
BEGIN
SELECT DECODE(IDIOMA_FIN, 'I', INGLES, ESPANOL)
INTO RETORNO2
FROM TEST_TRANSLATOR
WHERE DECODE(IDIOMA_FIN, 'I', ESPANOL, INGLES) =
SUBSTR(PALABRA, RESUL_ANTE, RESUL-1-RESUL_ANTE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETORNO2 := '*'||TRIM(SUBSTR(PALABRA, RESUL_ANTE, RESUL-1-RESUL_ANTE))||'*';
END;
RETORNO := RETORNO||' '||RETORNO2;
END;
END LOOP;
RETURN(RETORNO);
END;
--LLAMANDO A LA FUNCIÓN
DECLARE
PALABRA VARCHAR2(500);
IDIOMA VARCHAR2(1);
BEGIN
DBMS_OUTPUT.PUT_LINE(FN_TRADUCTOR(PALABRA, IDIOMA));
END;
Valora esta pregunta
0