Si aprendes a decidir cuando se debe construir PL-SQL Procedures en Oracle (Procedimientos Almacenados) o PL-SQL Function en Oracle (Funciones) comenzaras a desarrollar aplicaciones de software que sean modulares, ordenadas, eficientes y fáciles de mantener.
Algunas personas me han comentado que llevan mucho tiempo trabajando con PL-SQL Packages en Oracle y aun no comprenden cuando se debe construir un Procedimiento (PL-SQL Procedures en Oracle) o una Función (PL-SQL Function en Oracle) en la Base de Datos Oracle. Sinceramente también fue una pregunta que yo mismo me hice por mucho tiempo, pero que finalmente pude encontrar la respuesta, formulándome solo dos pequeñas preguntas para cada caso, las que permiten entender el concepto más rápidamente.
Veamos el significado de PL-SQL Procedures en Oracle y cuando se debe utilizar:
Los PL-SQL Procedures en Oracle (Procedimiento) son un conjunto de etapas, métodos o definiciones paso a paso, que se utilizan para resolver un problema. Es un subprograma o parte de un programa principal que en Oracle se denominan PL-SQL Packages en Oracle.
Para determinar si debes construir PL-SQL Procedures en Oracle tienes que responder de forma afirmativa a las siguientes preguntas:
- ¿El proceso debe recibir Parámetros de Entrada?
- ¿El proceso debe retornar varios Parámetros de Salida?
Por ejemplo, si necesitas un proceso que te permita obtener los datos de un empleado en particular, las respuestas a las preguntas 1 y 2 es SI, por lo tanto debes construir un Procedimiento (PL-SQL Procedures en Oracle) como el siguiente:
/* PL-SQL Procedures en Oracle */
Procedure Prc_Infor_Empleado(
p_Rut In Number,
p_Nombre Out Varchar2,
p_Direccion Out Varchar2,
p_Edad Out Number,
p_Id_Departamento Out Number) Is
Begin
Select emp.nombre, emp.direccion, emp.edad, emp.id_departamento
Into p_Nombre, p_Direccion, p_Edad, p_Id_Departamento
From T_Empleados Emp
Where Emp.Rut = p_Rut;
Exception
When No_Data_Found Then p_Nombre:= ‘Empleado no existe’;
End Prc_Infor_Empleado;
/* PL-SQL Procedures en Oracle */
Los PL-SQL Procedures en Oracle siempre deben recibir al menos un parámetro de entrada y deberá tener uno o varios parámetros de salida, pueden haber excepciones donde tal vez no necesites parámetros de salida, pero por lo menos se debe tener un parámetro de salida que indique si el proceso termino correctamente.
Veamos el significado de PL-SQL Function en Oracle y cuando se debe utilizar:
Las PL-SQL Function en Oracle (Función) son un conjunto de instrucciones que tienen un objetivo en particular y permiten retornar un resultado, pueden ser ejecutadas desde cualquier parte del código. Las PL-SQL Function en Oracle a diferencia de los PL-SQL Procedures en Oracle siempre devuelve un valor como respuesta.
Para determinar si debes utilizar una PL-SQL Function en Oracle tienes que responder de forma afirmativa a las siguientes preguntas:
- ¿Lo que voy a desarrollar será ocupado en otros procesos?
- ¿Debo obtener siempre un solo resultado?
Por ejemplo, si determinas que en varios procesos que debes construir para tu aplicación, siempre necesitas obtener la edad de un empleado para poder controlar ciertas acciones, las respuestas a las preguntas 1 y 2 es SI, por lo tanto debes construir una PL-SQL Function en Oracle como la siguiente:
/* PL-SQL Function en Oracle */
Function Fnc_Empleado_Edad(p_Rut In Number) Return Number Is
l_Edad Number;
Begin
Select emp.edad Into l_Edad From T_Empleados Emp Where Emp.Rut = p_Rut;
Return l_Edad;
Exception
When No_Data_Found Then Return 0;
End Fnc_Empleado_Edad;
/* PL-SQL Function en Oracle */
Una PL-SQL Function en Oracle puede recibir uno o varios parámetros de entrada pero siempre debe retornar un solo valor como salida, en este caso la edad del empleado. Esta PL-SQL Function en Oracle puede ser utilizada por cualquier proceso que requiera obtener la edad del empleado.
Te propongo que pruebes de inmediato estas preguntas en los procesos que debas desarrollar en la Base de Datos Oracle, con tus propios PL-SQL Procedures en Oracle y PL-SQL Function en Oracle que debas construir, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.
Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Procedures en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Function en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Director del Curso “Domina Tus Packages En Oracle“
Es increible que en unas cuantas lineas expliques de manera practica y sencilla cuando utilizar un procedure o una funcion. Excelente articulo, de verdad admiro tu manera de colaborar y aportar tus conocimientos, a las personas como yo que apenas estoy empezando en esto del PLSQL creeme que me ayudan muchisimo este tipos de articulos. No me queda mas que agradecerte y desear que existan mas personas como tu que se dan el tiempo de compartir.
Saludos cordiales!!
Emmanuel, te agradezco mucho tu comentario, esto me anima a seguir escribiendo artículos que sean útiles y de alto interés, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle
https://dominatuspackagesen0racle.com/detalles
Tremendo articulo. gracias y te felicito. Precisamente por primera vez me dieron la oportunidad para programar en pl/sql en el trabajo y comenzaremos pronto, te confieso q estoy algo nervioso pero voy a ser un experto en esto. Lleno de dudas q se q se iran marchando en el camino. ya veremos. Ora por mi. Hehehehhe, saludos hermano y gracias.
Hola Muchas Gracias Tu Publicación Me Es Muy Util.
Hola Cesar, gracias por comunicarte, me da mucho gusto que la información te sea útil y te invito a seguir visitando mi blog ya que todas las semanas estaré publicando nuevos artículos.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
PD: Obtiene tu reporte gratuito desde aqui:
https://dominatuspackagesen0racle.com
estuve revisando por tu articulo esta bien, pero estuve revisando y encontre que una funcion puede retornar un parametro de tipo array el cual creas previamente para utilizarlo? sabes algo de esto y o tienes algún ejemplo de esto.
Hola Jeaffry, gracias por comunicarte, lo que dices es correcto, una función puede retornar un arreglo como parámetro mira este ejemplo:
— primero se define el arreglo en el header de tu package
type tipo_arreglo_letras is varray(5) of varchar2(1);
— se crea función retornando el tipo de arreglo definido
function fnc_letras return tipo_arreglo_letras is
— se declara variable de tipo arreglo y se inicializa.
lar_letras tipo_arreglo_letras:= tipo_arreglo_letras(null,null,null,null,null);
begin
— se asignan valores al arreglo en cada posición.
lar_letras(1):= ‘a’;
lar_letras(2):= ‘e’;
lar_letras(3):= ‘i’;
lar_letras(4):= ‘o’;
lar_letras(5):= ‘u’;
— Se retorna el arreglo con datos.
return lar_letras;
end fnc_letras;
Esta es la forma de retornar un arreglo en una función, espero te sirva.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
PD: ¿Ya obtuviste mi reporte gratuido?, si aún no lo has hecho, ingresa desde aquí:
https://dominatuspackagesen0racle.com
Creo que tienes razon con las preguntas que haces para saber si hacemos un procedimiento o una funcion, pero que ocurre si las respuestas son parciales o sea por ejemplo en un procedimiento, que solo cumple una pregunta y no la otra, y tampoco encaja dentro de las preguntas de las funciones.????????
Hola Jose, gracias por comunicarte, respecto de tu pregunta si lo que debes hacer solo cumple una de las preguntas del procedimiento, es decir, que SI recibirá parámetros pero NO retornará ninguno o NO recibirá parámetros pero SI tendrá parámetros de retorno, estos casos son excepcionales ya que lo normal es que un procedimiento reciba al menos un parámetro y retorne al menos uno que indique que el proceso termino correctamente, aunque estos parámetros no son obligatorios y lo que debes hacer tampoco corresponde a una función, definitivamente debes hacer un procedimiento aunque cumpla una o ninguna de las preguntas pero no es lo optimo y recomendado.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle
https://dominatuspackagesen0racle.com/detalles/
Bueno tengo una consulta me han dejado esta tarea del esquema hr me piden:
Para todos lo empleados que fueron contratados después de haber contratado al empleado que gana el menor sueldo en la empresa, se necesita obtener el año y el ultimo día del mes que fue contratado, ademas de mostrar su nombre y código.
bueno y no se creo que debo hacer dos funciones uno para obtener el año y el otro para obtener el ultimo día del mes pero ademas también creo que debería utilizar cursores?
Si usted me solucionaría este problema estaría muy agradecido.De antemano Gracias.
Hola Jose, gracias por comunicarte, este problema parece complicado pero para entenderlo y solucionarlo se debe hacer en dos partes:
1. Primero se debe buscar el empleado con el menor sueldo, haciendo algo asi por ejemplo:
select min(sueldo) menor_sueldo
into lin_menor_sueldo
from t_empleado;
2. Segundo se deben buscar todos los empleados cuyo sueldo sea mayor que el menor sueldo, haciendo algo como este ejemplo:
select to_char(fecha_contrato,’yyyy’) ano_contrato, last_day(fecha_contrato) ultimo_dia_conttrato, nombre_empleado, codigo_empleado
from t_empleado
where sueldo > lin_menor_sueldo;
Tu solo debes reemplazar la tabla y nombres de los campos en estas consultas.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
PD: Ya obtuviste mi reporte gratuito sobre “Cómo Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aun no lo has hecho reclama el tuyo haciendo clic aquí:
https://dominatuspackagesen0racle.com/
Hola.
Mira quiero hacerte una consulta.
Lo que pasa es q pronto tendre una entrevista de trabajo donde me pidieron conocimientos en Oracle Pl/Sql, pero por el momento estoy aprendiendo y no se mucho del tema.
Quisiera saber cuales serian los temas mas puntuales que podrian preguntar o los que son mas empleados en este lenguaje y por favor me pudieras explicar. Me gusto mucho tu articulo y como explicas de bien este mismo.
Te agradezco me pudieras colabora.
Saludos.
Hola Melissa, gracias por comunicarte, en una entrevista de trabajo lo que te pueden preguntar es si manejas las instrucciones sql como el Select, Update, Delete e Insert, ademas si sabes contruir packages, procedimientos almacenados y funciones, eso es en general como lo básico que te pueden preguntar, te invito a que sigas visitanto mi blog donde puedes encontrar bastante información sobre estos temas, para tener éxito en tu entrevista solo debes presentarte con seguridad, gracias y mucha suerte.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Gracias por el artículo,
Una pregunta: Qué debo usar cuando No necesito retornar nada, pero si es algo que estoy usando constantemente, por ejemplo, escribir un log en una tabla de usuario.
Hola Edwin, gracias por comunicarte, si no vas a retornar nada te recomiendo que uses un procedure, es decir, puedes usar solo parámetros de entrada pero no de salida, aunque siempre es recomendable retornar por lo menos un parámetro de salida que indique si el proceso termino correctamente o con error, pero para un log no es tan necesario, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Hola, bueno estoy aqui para agradecerte ya tus lecciones me han sido de gran ayuda,tambien quisiera saber si me puedes ayudar con una tarea,porque tiene que ver algo con c#.
Lo que pasa es que me han enseñado hoy lo q son roles y privilegios en oracle y de tarea piden crear un formulario en c# donde se ingresen:
1ro. El usuario(sys,system,hr,etc.) ahora estos usuario tienen procedimientos almacenados(2do. en ingresar) y lo que yo quiero es pasar ese procedimiento(el codigo) a un list box, ya me han dado el cioigo para crear eso, es el sgte:
create or replace
procedure US_REPORTE_OBJETOS(X_OB in VARCHAR2,X_US IN VARCHAR2)
AS
X_OBJETO VARCHAR2(25):=X_OB;
X_USUARIO VARCHAR2(25):=X_US;
X NUMBER:=0;
CURSOR OBJETOS IS SELECT OBJECT_NAME,OBJECT_TYPE,CREATED,STATUS FROM DBA_OBJECTS
WHERE OWNER=UPPER(X_USUARIO) AND OBJECT_TYPE=UPPER(X_OBJETO);
BEGIN
DBMS_OUTPUT.PUT_LINE(‘****REPORTE DE OBJETOS DEL USUARIO:’||UPPER(X_USUARIO)||’ ****’);
DBMS_OUTPUT.PUT_LINE(‘TIPO DE OBJETO: ‘||UPPER(X_OBJETO));
DBMS_OUTPUT.PUT_LINE(‘ ‘||RPAD(‘NOMBRE’,18,’ ‘)||RPAD(‘TIPO’,10,’ ‘)||RPAD(‘CREACION’,10,’ ‘)||’STATUS’);
FOR I IN OBJETOS LOOP
DBMS_OUTPUT.PUT_LINE(‘ ‘||RPAD(I.OBJECT_NAME,18,’ ‘)||RPAD(I.OBJECT_TYPE,10,’ ‘)||RPAD(I.CREATED,10,’ ‘)||I.STATUS);
X:=X+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘TOTAL DE OBJETOS ‘||UPPER(X_OBJETO)||’ :’||X);
DBMS_OUTPUT.PUT_LINE(‘************************************’);
DBMS_OUTPUT.PUT_LINE(‘FECHA: ‘||TO_CHAR(SYSDATE,’DY,DD-MON-YYYY’));
END US_REPORTE_OBJETOS;
—————————————-
SET SERVEROUTPUT ON
DECLARE
X VARCHAR2(25):=’&_OBJETO’;
Y VARCHAR2(25):=’&_USUARIO’;
BEGIN
US_REPORTE_OBJETOS(X,Y);
END;
———————————————-
mi problema se encuentra básicamente en como llamar a un procedimiento desde c# y bueno lo otro es como pasarlo linea por linea,quisiera saber si tienes esa informacion y si me podrias ayudar.
De antemano muchas gracias.
Y disculpa la dificultad de mi pedido.
Hola Jose, gracias por comunicarte, si entiendo bien lo que quieres hacer es mostrar en un listbox los procedimientos almacenados que tiene el usuario ingresado, eso lo puedes hacer creando un cursor como parámetro de salida, no conozco mucho c# pero como llamar un procedimiento de Oracle debería salir en la documentación de c#.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
El artículo es muy interesante, muchas gracias
Hola Patricio, gracias por comunicarte y por tu comentario, seguiré escribiendo artículos que aporten valor a los lectores, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Hola que tal….mi duda es la siguiente, puedo pasar un Array como parámetro de una función?
Gracias
Hola Jorge, gracias por comunicarte, claro que si puedes pasar un array como parámetro a una función de la siguiente manera:
— definición del arreglo en la cabecera
type t_arreglo is varray(3) of varchar2(10);
— definición de la función en el cuerpo recibiendo el arreglo como parámetro.
function fnc_mi_arreglo(p_mi_arreglo in t_arreglo) return number is
begin
p_mi_arreglo:= t_arreglo(‘Mateo’, ‘Jaime’, ‘Rosa’);
for i in 1..p_mi_arreglo.count loop
dbms_output.put_line(p_mi_arreglo(i));
end loop;
Return 1;
end fnc_mi_arreglo;
PD: Ya obtuviste mi Libro-reporte gratuito sobre ‘Como Construir un Select Eficiente en Oracle en Solo 7 Pasos’, si aun no lo tienes puedes obtenerlo desde aquí:
https://dominatuspackagesen0racle.com/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Excelente artículo, muy claro y didáctico. Realmente me ha sido de gran utilidad.
Hola Nelson, gracias por comunicarte y por tu excelente comentario, te invito a seguir visitando mi blog y a estar atento a tu email porque seguiré enviándote información valiosa que te sea de util, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
https://dominatuspackagesen0racle.com/
Exelente articulo muy detallado y lo mejor en pocas palabras para determinar que usar si función ó procedimiento, basicamente la esencia para un rápido desarrollo de aplicaciones.
Hola Israel, gracias por comunicarte y por tu excelente comentario, me alegro que esta información te sea útil y ahora lo mas importante es que la pongas en práctica, sigue adelante, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
https://dominatuspackagesen0racle.com/
saludos, gracias por tu explicación… yo tampoco tenia idea de cuando usar una función y cuando un procedimiento. solo sabia q una función retornaba 1 valor y los procedimientos mas valores…
pero con tu explicación ya tengo claro los conceptos.. nuevamente gracias
Hola Xavier, gracias por comunicarte y por tu excelente comentario, me da gusto que la información te sea útil, te invito a seguir visitando mi blog y a estar atento a tu email porque te seguire enviando mas información valiosa para tu aprendizaje, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
https://dominatuspackagesen0racle.com/
me parece muy útil esos ejemplos, con respecto al procedimiento para localizar un registro en la base de datos creaba una vista y luego recorría por medio de un ciclo FOR por medio de condiciones.
Hola Pedro, gracias por tu comentario, me alegra que la información te sea de utilidad, si este artículo te pareció interesante te invito a que compartas el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les puede interesar esta información y quédate atento a tu email porque seguiré enviándote información valiosa para tu aprendizaje.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Hola Felicidades por tu artículo, pero tengo una duda con respecto a los procedimientos.
¿El proceso debe retornar varios Parámetros de Salida?
Si el proceso tiene varias parámetros de salida, no se puede crear un object type que contenga todos los parámetros de retorno y el procedimiento se convertiria en una función rápidamente, retornado ese object type?
Al hacer la pregunta de los procedimientos solo se cumple una. ¿Que debo hacer en esos casos?
Muchas gracias por tu atención.
Hola Marylen, gracias por comunicarte y por tu comentario, claro que puedes crear un object type con los parámetros de retorno que necesitas; Si solo se cumple una de las preguntas del procedimiento, en estos casos debes usar el descarte, es decir, si lo que debes hacer tampoco cumple las preguntas de la función entonces debes crear un procedimiento, ya que también hay excepciones en donde tal vez no requieras parámetros de entrada o parámetros de salida, pero por lo menos debe tener un parámetro de salida que indique si el proceso termino correctamente, gracias.
PD: Si te interesa saber más, en estos momentos estoy presentando unos vídeos gratuitos avanzados donde muestro como crear un Select Compuesto por Múltiples Tablas, para verlos puedes acceder desde el siguiente enlace https://dominatuspackagesen0racle.com/select/video_1/, no olvides dejarme tus comentarios.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Estoy acostumbrado a trabajar con SQLServer y necesito reciclarme en Oracle.
Hasta ahora he visto las opciones :new, :old, %rowtype y triggers after y before.
Te agradecería que me indicaras otras opciones que sean tan útiles como estas, y ya las estudio por mi cuenta, o si me indicas algún artículo tuyo como este, mucho mejor.
Muchas gracias.
Hola Alberto, gracias por comunicarte y por tu comentario, que bueno que te ha gustado esta información, lo que te puedo recomendar es que obtengas mi libro-reporte ‘Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos’ desde el enlace https://dominatuspackagesen0racle.com/.
También te recomiendo que veas una serie se vídeos gratuitos que acabo de liberar al publico sobre ‘Como Crear un SELECT Compuesto por Múltiples Tablas Fácilmente en Oracle’, para verlos solo sigue las indicaciones de esta página: https://dominatuspackagesen0racle.com/select/, gracias.
PD: Finalmente también te recomiendo que sigas visitando mi blog https://dominatuspackagesen0racle.com/ y que lo recomiendes a tus amigos o personas que también les pueda interesar esta información.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Realmente Roberto me han servido bastantes los artículos que ha publica, hay cosas que en ocasiones se dejan de lado y realmente son importantes en la programación.
Roberto
Costa Rica.
Hola Roberto, gracias por comunicarte y por tu excelente comentario, me da mucho gusto que la información se sea de utilidad y te invito a que compartas este enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito on Oracle.
https://dominatuspackagesen0racle.com/
Estimado,
Muy buena su publicación, clara y concisa… me dí muchas vueltas por la red para encontrar material que aclarara mis dudas, gracias.
Hola Felipe, gracias por comunicarte y por tu comentario, me da mucho gusto que la información te sea de utilidad, ya obtuviste mi libro-reporte gratuito sobre ‘Cómo Construir un SELECT Eficiente en Oracle en Solo 7 Pasos’, si aun no lo tienes puedes obtenerlo desde el siguiente enlace:
https://dominatuspackagesen0racle.com/
PD: Si te ha gustado la información comparte esta página https://dominatuspackagesen0racle.com/ con tus amigos o personas que creas que también les puede interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
De verdad gracias por tus artículos, explicas de una manera muy clara y sencilla, donde fácilmente se puede entender sobre cada tips. Espero que sigas aportando tus conocimientos en cuanto a Oracle.
Felicitaciones!
Saludos.
Hola Javier, gracias por comunicarte y por tu excelente comentario, me da mucho gusto que la información te sea de utilidad, si te han gustado los artículos comparte el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
https://dominatuspackagesen0racle.com/
Hola amigo, tengo una duda, en tu procedimiento cuando lo mandas a llamar ¿qué es lo que pones? es el EM.RUT, lo que sería el ID, ¿no?, ¿es lo único que pones para que te de el resultado? Gracias
Hola Pepe, gracias por comunicarte y por tu comentario, cuando llamas un procedimiento debes colocar todos parámetros de entrada (in) y salida (out) que tiene definidos, es decir, en el ejemplo debes llamarlo de esta forma: Prc_Infor_Empleado(lin_Rut,lst_Nombre,lst_Direccion,lin_Edad,lin_Id_Departamento);
PD: Si te han gustado los artículos te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Muchas gracias por dar parte de su conocimiento. Es muy importante saber su aplicación en el ámbito empresarial.
Hola Henry, gracias por comunicarte y por tu comentario, me da mucho gusto que la información te sea de utilidad y que te ayude de una u otra manera, ya obtuviste mi libro-reporte “Cómo Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aún no lo tienes puedes obtenerlo desde este enlace: https://dominatuspackagesen0racle.com/
PD: Están disponibles una serie de vídeos gratuitos que revelan “Lo Fácil que es Crear un SELECT Compuesto por 9 Tablas o Mas” puedes acceder a ellos desde el enlace: https://dominatuspackagesen0racle.com/select/video_1/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Excelente aporte, nunca me habia preguntado cuando utilizar uno o el otro, pues simepre he utilizado solamente procedimientos almacenados.
Hola Dragón Negro, gracias por comunicarte y por tu comentario, me da mucho gusto que la información te sea de utilidad, si te han gustado los artículos te invito a que compartas el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Buenisimo…!
Hola Giomar, gracias por comunicarte, si te ha gustado la información de este blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar este contenido, gracias.
Saludos
Roberto Vicencio – Para tu Éxito con Oracle.
Me parece un excelente articulo con valiosos puntos de apoyo o ayuda para quienes desarrollamos PL/SQL.
Te invito a continuar con esta labor tan loable de transmitir conocimientos los cuales de lo contrario poca utilidad tendrian si no son compartidos
Hola Efrain, gracias por comunicarte y por tu excelente comentario, si te han gustado los artículos yo también te invito a compartir en enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Estimados.
Solicitando su apoyo, tengo que validar que en la tabla “Matricula (idmatricula pk, idseccion fk, idalumno fk, estado)” no pueda ingresarse un registro con igual idseccion e igual idalmuno.
Cabe resaltar que esto lo tengo que hacer utilizando un Store Procedure.
Lenguaje: PLSQL. Gracias!!!
Hola Juan, gracias por comunicarte, para hacer esa validación dentro de un store procedure solo debes hacer una consulta como la siguiente, el procedure debe recibir como parámetros el pin_idseccion y pin_idalumno:
select count(1)
into lin_existe
from matricula
where idseccion = pin_idseccion
and idalumno = pin_idalumno;
if lin_existe = 0 then
— alumno no existe, proceder a insertar alumno en tabla matricula —
else
— alumno ya esta ingresado, no puedo continuar —
end if;
PD: Ya obtuviste mi Libro-Reporte sobre “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”, si aún no lo tienes puedes obtenerlo desde este enlace: https://dominatuspackagesen0racle.com/
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Muy util el articulo, yo convivo con oracle todos los dias.desde hace un tiempo y estos articulos ayudan muchisimo. Gracias por compartir
Hola Victor, gracias por comunicarte, me da mucho gusto que esta información te sea de utilidad, si te ha gustado lo que has visto del blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar este contenido, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Hola Roberto muchas gracias por transmitir tu conocimiento, apenas empiezo trabajar con Bases de Datos, esta bien explicado.
Gracias
Hola Donato, gracias por comunicarte, me alegra mucho que el contenido del libro-reporte te sea de utilidad, si te ha gustado lo que has visto del blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar ver esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Muy buen consejo a ser tomado en cuenta.
Hola Aurelio, gracias por comunicarte, me da mucho gusto que esta información te sea de utilidad.
PD: Si te ha gustado lo que has visto del blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar ver este contenido, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Para mi apreciación es un excelente artículo y lo más que me gusta es que está muy bien estructurado pedagogicamente.
Hola Pedro, gracias por comunicarte, quédate atento a email porque estaré enviándote mas información de tu interés, seguimos en contacto.
PD: Si te ha gustado lo que has visto del blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar ver esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.
Tenía que realizar un INSERT SELECT y en el proceso el valor de unos campos se multiplicaban por un factor que se sacaba de una consulta en de un JOIN del select. Pensaba en crear una función que me diera el factor, pero como el INSERT SELECT es para varios millones de registros significaba llamar a la función millones de veces perjudicando la performance. Significa entonces que hay casos donde se desaconseja crear funciones? Saludos, tu curso es muy bueno 100% recomendable
Hola Eduardo, gracias por comunicarte y por el comentario, en estos casos todo depende, como digo en el artículo si el factor lo vas a ocupar en otros procesos es conveniente crear una función, pero también debes ver que lo que tenga la función sea eficiente, si para obtener el factor debes consultar grandes tablas eso afecta el rendimiento, pero si es una tabla pequeña indexada eso es optimo.
PD: Si te ha gustado lo que has visto del blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/cmbl/ con tus amigos o personas que también les pueda interesar ver esta información, gracias.
Saludos
Roberto Vicencio – Para Tu Éxito con Oracle.