¿Cómo escribir una función personalizada en Oracle para determinar si existen datos en una tabla?
Se debe encontrar una variable para recibir el valor de retorno de la función durante la ejecución;
La sintaxis es la siguiente: Crear o reemplazar función nombre_función
(
argu1 [modo1] tipo de datos1,
argu2 [modo2] tipo de datos2, .........
)
devolver tipo de datos
es
comienzo
fin;
exec var v1 v1 varchar2(100)
exec: v1:=nombre_función
Sin ningún argumento
crear o reemplazar la función get_user return varchar2 es
Resultado varchar2(50);
comenzar
seleccione nombre de usuario en el resultado de user_users
return(Resultado);
end get_user;
Ejecución:
con parámetro p>
crear o reemplazar la función get_sal(empname en varchar2) el número de retorno es
Número de resultado;
comenzar
seleccione sal en el resultado de emp donde ename=empname;
return(Resultado);
end get_sal;
Ejecutar: SQLgt; var sal número
SQLgt; : sal:=get_sal(' scott');
Funciones sin argumento
crear o reemplazar la función get _info(e_name varchar2, job out varchar2) el número de retorno es
Número de resultado;
comenzar
seleccione sal, trabajo en Resultado, trabajo desde emp donde ename=e_name
return(Resultado); p>
end get_info ;
Ejecutivo: SQLgt; var trabajo varchar2(20)
SQLgt; var dname varchar2(20)
SQLgt; : dname:=get_info(' SCOTT',. job)
strsql varchar2(200);
begin
si m_PreTaskID es nulo, entonces
return '';
end if;
strsql:= 'seleccione max(nombre de nodo) de t_Wf_Tasklist donde TaskID = ''' ||
m_PreTa
skID|| '''';
ejecutar strsql inmediato
en nombre de nodo;
devolver nombre de nodo
fin;
Formato de salida del título:
crear o reemplazar la función FormatTitle(m_title varchar2,
m_length número,
m_FillChar varchar2) devolver varchar2 IS
comenzar
si lengthb(m_title) gt; m_length*2 entonces
devuelve substr(m_title, 0, m_length) ||| >reemplazar función FormatTitle(m_title varchar2,
m_length número,
m_FillChar) función FillChar
else
return m_title; p>
m_FillChar) p>
finalizar si;
finalizar;