Descubre Cómo Declarar Parámetros de Salida en Oracle PL/SQL Paso a Pasopost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

Introducción a los Parámetros en PL/SQL

Los parámetros son un mecanismo muy importante cuando hablamos de funciones o procedimientos en un lenguaje de programación.

Adicionalmente en un lenguaje como PL/SQL se pueden definir los parámetros de entrada(por defecto), de salida o ambos.

En éste capítulo trataremos el uso de los parámetros tanto en funciones como en procedimiento PL/SQL.

Al especificar parámetros de procedimiento, los programas de llamada pueden pasar valores en el cuerpo del procedimiento.

Esos valores se pueden usar con diversos fines durante la ejecución del procedimiento.

Lea también: IVA 21% Excel

Un procedimiento puede tener un máximo de 2100 parámetros; cada uno asignó un nombre, un tipo de datos y una dirección.

Los valores de parámetro suministrados con una llamada a procedimiento deben ser constantes o una variable; no se puede usar un nombre de función como valor de parámetro.

Definición y Tipos de Datos de Parámetros

Los parámetros deben definirse con un tipo de dato cuando se declaran en una sentencia CREATE PROCEDURE.

El tipo de datos de un parámetro determina el tipo y el rango de valores que se aceptan para él cuando se llama al procedimiento.

La asignación de nombres de forma explícita a los parámetros y la asignación de los valores adecuados para cada uno en una llamada a procedimiento permite proporcionar los parámetros en cualquier orden.

Lea también: Guía IVA reducido

Los parámetros se definen luego del nombre del procedimiento.

Si son de tipos de datos diferentes, Oracle los convierte.

Parámetros Opcionales y Valores Predeterminados

Un parámetro se considera opcional si tiene un valor predeterminado especificado cuando se declara.

Si no se puede especificar ningún valor correctamente como predeterminado para el parámetro, especifique NULL como el valor predeterminado.

Luego de definir un parámetro y su tipo, opcionalmente, se puede especificar un valor por defecto; tal valor es el que asume el procedimiento al ser ejecutado si no recibe parámetros.

Lea también: ¿Cómo localizar tus XML del SAT?

Si no se coloca valor por defecto, un procedimiento definido con parámetros no puede ejecutarse sin valores para ellos.

En caso que un procedimiento tenga definidos varios parámetros con valores por defecto y al invocarlo colocamos uno solo, Oracle asume que es el primero de ellos.

Aunque los parámetros para los que se hayan especificado valores predeterminados se pueden omitir, solo se puede truncar la lista de parámetros que no acepta valores NULL.

Puede omitir parámetros si especifica los nombres de parámetros.

Modos de Parámetros en PL/SQL

Parámetros de Entrada (IN)

La dirección de un parámetro puede ser de entrada, en cuyo caso el valor se pasa al cuerpo del procedimiento.

Para que un procedimiento almacenado admita parámetros de entrada se deben declarar al crearlo.

El comportamiento común de un parámetro es como entrada, ésto quiere decir que recibirá un dato almacenado en el parámetro enviado desde el contexto en el que se llama a la función.

Parámetros de Salida (OUT)

La dirección de un parámetro puede ser... de salida, donde el procedimiento devuelve un valor al programa que lo llama.

Los parámetros de salida permiten modificar el valor de una variable externa a la función relacionada con el parámetro.

En cada función o procedimiento que contenga parámetros de salida, éstos, son establecidos con valores NULL al inicio de las funciones o procedimientos.

Un parámetro del tipo salida, no tendrá el comportamiento de un parámetro del tipo entrada por defecto.

El procedimiento devuelve el valor actual del parámetro de salida al programa de llamada cuando se abandona el procedimiento.

El nombre del parámetro y de la variable no tienen por qué coincidir.

El procedimiento OBTENER_FECHA, muestra un ejemplo de parámetros de salida.

Ejemplo de Procedimiento Oracle con Parámetros de Salida

A continuación se presenta un ejemplo de un procedimiento PL/SQL que utiliza parámetros de salida:

PROCEDURE SP_CONSUL_LIQUIDACION ( P_Rut IN NUMBER,P_Periodo IN varchar2, vjsonres OUT VARCHAR2,MsgError OUT VARCHAR2) IS /**************************************************************************** Nombre : SP_CONSUL_LIQUIDACION Objetivo : Sp encargado Enviar datos de liquidacion como salida Fecha : 2018-03-14 entarda : Rut Funcionario, Fecha-Liquidacion Salida : Json con los datos del funcionario y su liquidacion ejemplo salida : '{"nombre":"Juan Perez","periodo":"201705","cargo":"ejecutivo Financiero","fecha_ingreso":"12032015","prevision":"AFP PROVIDA", "salud":"FONASA", "centro_costo":"3011400 - LINARES SUBGERENCIA RELACIONES", "area":"053 LINARES", "haberes":[{"item1":[{"descripcion":"Sueldo Base $266.640,00","valor":"266.640"}],"item2":[{"descripcion":"Bono de Productividad","valor":"61.000"}],"item3":[{"descripcion":"Comision Avances RF(XL)","valor":"10.200"}], "item4":[{"descripcion":"Total Haberes","valor":"337.840"}] }], "otros_haberes":[{"item1":[{"descripcion":"Movilizacion Cont. Colectivo Fed. Sind. Trab. Unidos","valor":"32.200"}],"item2":[{"descripcion":"Total Asignaciones","valor":"32.200"}] }], "descuentos_legales":[{"item1":[{"descripcion":"11.45% Cotiz. AFP PROVIDA sobre: 765.454","valor":"87.644"}], "item2":[{"descripcion":"7% FONASA","valor":"53.582"}], "item3":[{"descripcion":"Total Descuentos Legales","valor":"141.226"}] }], "otros_descuentos":[{"item1":[{"descripcion":"Anticipo de sueldo","valor":"50.000"}],"item2":[{"descripcion":"Anticipo Prestamo sindical Cuota 11 de 24","valor":"10.417"}], "item3":[{"descripcion":"Seguro Ptmo. Los andes","valor":"52.859"}],"item4":[{"descripcion":"Total Otros Descuentos","valor":"113.276"}] }], "totales":[{"totalfinal":[{"totala":"337.840","totald":"113.246"}],"item2":[{"descripcion":"Alcanse liquido a pagar","valor":"10.417"}],"item3":[{"descripcion":"Descuentos (-)","valor":"52.859"}],"item4":[{"descripcion":"TOTAL A PAGAR","valor":"113.276"}] }] }, { "nombre":"Juan Perez", "periodo":"201706", "cargo":"ejecutivo Financiero", "fecha_ingreso":"12032015", "prevision":"AFP PROVIDA", "salud":"FONASA", "centro_costo":"3011400 - LINARES SUBGERENCIA RELACIONES", "area":"053 LINARES", "haberes":[{"item1":[{"descripcion":"Sueldo Base $266.640,00","valor":"266.640"}], "item2":[{"descripcion":"Bono de Productividad","valor":"61.000"}], "item3":[{"descripcion":"Comision Avances RF(XL)","valor":"10.200"}],"item4":[{"descripcion":"Total Haberes","valor":"337.840"}] }], "otros_haberes":[{ "item1":[{"descripcion":"Movilizacion Cont. Colectivo Fed. Sind. Trab. Unidos","valor":"32.200"}], "item2":[{"descripcion":"Total Asignaciones","valor":"32.200"}] }], "descuentos_legales":[{ "item1":[{"descripcion":"11.45% Cotiz. AFP PROVIDA sobre: 765.454","valor":"87.644"}], "item2":[{"descripcion":"7% FONASA","valor":"53.582"}], "item3":[{"descripcion":"Total Descuentos Legales","valor":"141.226"}] }], "otros_descuentos":[{"item1":[{"descripcion":"Anticipo de sueldo","valor":"50.000"}],"item2":[{"descripcion":"Anticipo Prestamo sindical Cuota 11 de 24","valor":"10.417"}], "item3":[{"descripcion":"Seguro Ptmo. 

Parámetros de Entrada y Salida (IN OUT)

En la función HR.REGISTRAR_CLIENTE el parámetro P_ID actúa como parámetro de entrada y salida.

Declaración de Variables en PL/SQL

Cualquier variable que se declare y no se inicialice tiene por defecto el valor NULL.

Los tipos posibles son todos aquellos válidos para SQL añadiendo algunos propios de PL/SQL.

Para más información sobre los tipos propios de PL/SQL consultar el PL/SQL User’s Guide and Referente.

Atributos %TYPE y %ROWTYPE

Se puede declarar el tipo de una variable tomándolo de otro identificador, usando el atributo %TYPE y se puede declarar el tipo de una variable también cuando es un tipo estructurado con el atributo %ROWTYPE.

Esto es particularmente útil cuando una variable va a tomar valores de una columna de una tabla.

Declarar variables con el atributo %TYPE tiene dos ventajas.

Primero, no necesitamos conocer el tipo exacto de la columna de la tabla.

En este caso para acceder a cada campo que tuviera el tabla employee mediante la variable J tendríamos que usar la estructura variable.nombre_campo.

Un bloque tiene acceso a los objetos identificados dentro de su esquema.

Solo podremos acceder a los objetos del usuario donde estemos conectados y a los que ese usuario pueda acceder porque le hayan otorgado permisos.

tags: #como #declarar #parametros #salida #oracle