Antes do 12c, era necessário criar uma PL/SQL function/procedure (schema
object) para utilizar em conjunto com um comando SQL e para isso era
necessário ter privilégios de CREATE PROCEDURE.
Segue um exemplo retirado de uma apresentação do Tom Kyte:
Table created.
SQL> insert into t values ( 'a' );
insert into t values ( '1' );
insert into t values ( null );
commit;
Como era antes do 12c:
function is_number_old(x in varchar2) return varchar2 is
Plsql_Num_Error exception;
pragma exception_init(Plsql_Num_Error, -06502);
begin
if (To_Number(x) is NOT null) then
return 'Y';
else
return '';
end if;
exception
when Plsql_Num_Error then
return 'N';
end;
/
Function created.
is_number_old(x) is_num
from t;
ROWNUM X IS_NUM
---------- ----- --------------------
1 a N
2 1 Y
3
Trace após adicionar 110.000 registros na tabela, para comparar os
tempos:
Como fica no 12c:
function Is_Number (x in varchar2) return varchar2 is
Plsql_Num_Error exception;
pragma exception_init(Plsql_Num_Error, -06502);
begin
if (To_Number(x) is NOT null) then
return 'Y';
else
return '';
end if;
exception
when Plsql_Num_Error then
return 'N';
end Is_Number;
0 comentários:
Postar um comentário