InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL

Afiliados
La Web del programador
MundoProgramacion


 

Procedimientos almacenados

    Un procedimiento es un subprograma que ejecuta una acción especifica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.

    La sintaxis de un procedimiento almacenado es la siguiente:


CREATE [OR REPLACE]
PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaracion de variables locales
BEGIN
  -- Sentencias
[EXCEPTION]
  -- Sentencias control de excepcion
END [<procedure_name>];

    El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento existe, se producirá, un error.

    La sintaxis es muy parecida a la de un bloque anónimo, salvo porque se reemplaza la seccion DECLARE por la secuencia PROCEDURE ... IS en la especificación del procedimiento.

    Debemos especificar el tipo de datos de cada parámetro. Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

    Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.


CREATE
OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER)
IS
-- Declaracion de variables locales
BEGIN
  -- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE

WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;

     También podemos asignar un valor por defecto a los parámetros, utilizando la clausula DEFAULT  o el operador de asiganción (:=) .


CREATE
OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER DEFAULT 10 )
IS
-- Declaracion de variables locales
BEGIN
  -- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE

WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;

    Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema nos indica que el procedimiento se ha creado con errores de compilación podemos ver estos errores de compilacion con la orden SHOW ERRORS en SQL *Plus.

    Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en realidad es válido para cualquier subprograma). Estas son:

  • Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procedure los define.


BEGIN
Actualiza_Saldo(200501,2500);
COMMIT;


END;

  • Notación nominal:Se pasan los valores en cualquier orden nombrando explicitamente el parámetro.


BEGIN
Actualiza_Saldo(cuenta => 200501,new_saldo => 2500);
COMMIT;

END;


Inicio | Tutorial PL/SQL Subprogramas en PL/SQLTutorial PL/SQLFunciones en PL/SQL Versión para imprimir Foros de consulta

 
Procedimientos publicos por Faramir
Respuesta recibida el [30/11/2007 05:33:03]
Buenos dias. Quisiera saber si existe la posibilidad de crear procedimientos publicos, es decir, yo tengo un sysdba, pero necesito que un procedimiento suyo sea ejecutado por un usuario normal, es posible eso??
Muchas gracias

 
Buen Tutorial PL/SQL por Yan
Respuesta recibida el [14/01/2008 06:02:40]
En general me parecio un buen material, me ayudo a entender algunas cosas que no tenia muy claras. Espero que hagas mas.

Saludos chico guapo.

 
procedimiento por javier
Respuesta recibida el [04/03/2008 12:24:39]
Hola, no se que pasa con este procedimiento pero es ke cuando lo ejecuto me dice no valido.
create or replace
procedure prueba (nombre varchar2, salario number);
is
begin
update empleado set
renta=salario where
nomb_empl=empleado;
end;

begin
prueba('Sergio', 420000);
end;

 
llamar procedimiento con parametro out por juanpe
Respuesta recibida el [05/03/2008 09:26:48]
como se llamaría al procedimiento con un parámetro de salida? creo que es con dos puntos no? y como se recogerían los datos

 
asdads por asddas
Respuesta recibida el [16/03/2008 05:37:18]
aasdasd

 
d por d
Respuesta recibida el [19/03/2008 08:59:26]
d

 
Tranquilos por devjoker
Respuesta recibida el [20/03/2008 03:31:38]
sin insultar porfavor

 
hay alguna diferencia entre por roy
Respuesta recibida el [24/03/2008 12:14:16]
los procedimientos almacenados de oracle y sql

 
como se originan los sp por roy
Respuesta recibida el [24/03/2008 12:18:28]
la verdad quisiera saber como se originan los procedimienos almacenados
que bd los usan y como y de q forman cambian su versiones
habran sp orientados a bd objetos

 
soy gay por jorge
Respuesta recibida el [26/03/2008 07:11:01]
me gusta mucho el diego pór eso no se sql

 
Variables de tamaño mayor por Martha Gallego
Respuesta recibida el [25/04/2008 04:45:14]
Hola, necesito ayuda: como puedo darle a un parámetro de un procedimiento almacenado una longitud mayor a la que tiene por default(default es de 200) y requiero que sea mas longitud.  Como debo hacerlo.

 
r por j
Respuesta recibida el [14/06/2008 07:54:37]
diossssssssssssss

 
buen ejemplo por tiam
Respuesta recibida el [05/07/2008 02:41:58]
buen ejemplo para comenzar, muchas gracias por facilitar el 1er paso

 
precidimientos por hugo
Respuesta recibida el [09/07/2008 10:59:45]
hola a todos en el foro,como estan?estoy aprendiendo a usar pl/sql y m gustaria saber como puedo unir 2 procedimientos, ayudenme xfavor!!

 
para que se utiliza el is por javier
Respuesta recibida el [12/08/2008 02:39:26]
Mi pregunta es para que se utiliza el is en un procedimiento

 
Carajo !!!... por El Chavista
Respuesta recibida el [14/08/2008 08:57:07]
Patria , Socialismo o Muerte Carajo...

 
Carajo !!! por El Chavista
Respuesta recibida el [14/08/2008 08:57:44]
 	

Patria , Socialismo o Muerte Carajo...

 
Carajo !!! por El Chavista
Respuesta recibida el [14/08/2008 08:58:18]
Patria , Socialismo o Muerte Carajo...

 
Carajo !!! por El Chavista
Respuesta recibida el [14/08/2008 08:58:56]
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...
Patria , Socialismo o Muerte Carajo...

 
com por my
Respuesta recibida el [28/08/2008 01:23:07]
comentairo

 
respuesta para javier por JRD
Respuesta recibida el [03/09/2008 09:45:01]
Javier lo correcto es asi el anterior tenia errores de sintaxis.

create or replace procedure prueba (nombre varchar2, salario number)is
begin
update empleado set renta=salario where nomb_empl=empleado;
end;
/
begin
prueba('Sergio', 420000);
end;
/

 
Como llenar una colección con un loop por Polo
Respuesta recibida el [25/09/2008 09:03:39]
Buenos días colegas, mi pregunta es como puedo llenar una colección utilizando un loop para ello.

 
Te amo por Yo
Respuesta recibida el [26/09/2008 05:44:07]
Te amo


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Subprogramas en PL/SQLTutorial PL/SQLFunciones en PL/SQL Versión para imprimir

Procedimientos almacenados en PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 58721 Fecha de publicación: 28/06/2006
Pedro Herrarte, es consultor independiente, ofreciendo sercivios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 328 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 87 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 954 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 209 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 682 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 458 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 238 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1151 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 797 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
yo por nikoo ... [C#] 0 11/10/2008
Manual Visual Studio.NET por Shiko ... [Visual Basic .NET] 19 26/10/2006
conexión a LDAP por mari90 ... [ASP.NET] 21 05/02/2007
Coastal Inversiones SAC Coastal Vacations Oportunidad de Negocios por lecasur ... [ASP.NET] 1 11/10/2008
hacer el nombre de una tabla variable por leicolei ... [SQL Server] 2 10/10/2008
ayuda por yo ... [C#] 2 09/10/2008
Mostar nombre en una sesion de usuario por jhors ... [ASP.NET] 1 10/10/2008
Analista por Rolando ... [SQL Server] 0 10/10/2008
SQL dinámico en TRIGGERS por Alastor ... [ORACLE] 2 03/10/2008
Crystal Reports 8.5 por selvinalberto ... [Visual Basic 6.0] 0 10/10/2008
Agregar Columnas a un datagridview por Tony ... [Visual Basic .NET] 3 20/11/2007
Problema cargando un pl/sql Embebido en Pro*C por ejrivas ... [ORACLE] 0 10/10/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
24/05/2006 Cursores Explicitos en PL/SQL    forma parte de...Tutorial PL/SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
21/11/2007 Desencriptar Texto y variables con .NET VB y C# (segunda parte)
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
02/10/2006 Tablas multidimensionales    forma parte de...Tutorial C#
02/10/2006 Tablas unidimensionales    forma parte de...Tutorial C#
16/08/2007 Operaciones con conjuntos.    forma parte de...Tutorial de Transact SQL
06/09/2006 ¿Qué es el Collation en SQL ?
20/07/2006 Transacciones con PL/SQL    forma parte de...Tutorial PL/SQL
08/09/2007 Funciones en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]