 |
|
 |
|
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;
| |
| |
 |
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
|
| |
 |
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
|
| |
 |
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
|
| |
 |
que libro me recomiendas
por
paolo
Respuesta recibida el [22/10/2008 11:44:42]
|
 |
Hola, muchas gracias por el manual quisiera saber si lo puedo descargar y que libro me recomiendas para aprender sql que tenga ejemplos desde lo mas simple hasta disparadores y procedimientos almacenados que es lo que necesito aprender :D
|
| |
 |
Parametros IN OUT
por
Kalin
Respuesta recibida el [27/10/2008 11:52:33]
|
 |
Holas disculpa me podrían aclarar muy bien el asunto de los parámetros? , son valores de mi tabla o son cualquier nombre que o le asigne per0 con el tipo de mi variable? por favor...
|
| |
 |
Magnífico tutorial
por
Nathan
Respuesta recibida el [13/02/2009 11:54:48]
|
 |
Hola Pedro, muchas gracias por este gran tutorial de PL/SQL que pones a disposición de todos.
Saludos!
|
| |
 |
Nada nda
por
Unknow
Respuesta recibida el [03/03/2009 10:39:46]
|
 |
Esta bien esta page de vdd que se aprende mucho...
|
| |
 |
Parametros
por
Jimmy
Respuesta recibida el [10/03/2009 08:27:41]
|
 |
las variables son se cualquier tipo y nombre , solo que si quieres actualizar en un campo de una tabla tiene que ser obviamente del mismo tipo o lo conviertes antes antes de insertar a la tabla
|
| |
 |
consulta
por
Mc
Respuesta recibida el [25/03/2009 10:53:30]
|
 |
se puede hacer un procedure automatico, es decir q se ejecute a una hora especifica??? y que genere un archivo excel o q derive la informacion a una hoja ya hecha??? me podrias indicar el codgo por fas XD... gracias
|
| |
 |
Quiero Sab´r
por
JuanA
Respuesta recibida el [20/04/2009 12:42:05]
|
 |
????? No entiendo nada?? que es sql?
|
| |
 |
Ejecuar SP de un paquete con dblink
por
Roberto
Respuesta recibida el [23/04/2009 11:28:05]
|
 |
Quisiera saber como ejecutar un sp que se encuentra definido dentro de un paquete en otra base de datos usando dblink
|
| |
 |
nada
por
carlos
Respuesta recibida el [24/04/2009 08:37:55]
|
 |
buena página
|
| |
 |
llamar a funcion
por
Juan
Respuesta recibida el [03/05/2009 08:31:06]
|
 |
Hola amigos, quisiera saber si dentro de un procedimiento... yo podria definir una funcion y utilizar la misma dentro del procedimiento.. y como debo hacerlo... les agradeceria si pudieran proporcionarme un ejemplo.. o la sintaxis.. gracias!!
|
| |
 |
procedimiento con java
por
jhon
Respuesta recibida el [03/07/2009 02:44:58]
|
 |
una pregunta ,,,yo tengo un procedimiento en 10g normal "sencillo"
como hago para llamarlo y que me incerte un recistro desde java ,en todos aparece este codigo pero no entiendo .... es ingresar un registra en un procedimiento si me pueden ayudar selos agradeceria....... CallableStatement cs = conn.prepareCall("{ call JHON (nombre) }");
|
| |
 |
procedimiento por javier
por
drlang
Respuesta recibida el [23/08/2009 03:01:07]
|
 |
Hola. Tu procedimiento tiene un error muy simple. CREATE OR REPLACE PROCEDURE PRUEBA (NOMBRE VARCHAR2, SALARIO NUMBER) IS BEGIN UPDATE EMPLEADOS SET RENTA=SALARIO WHERE NOMB_EMPL=NOMBRE; END /
Y PARA EJECUTAR TU PROCEDIMIENTO DESDE SQL PLUS NECESITAS:
EXECUTE PRUEBA('OSCAR',24000); LISTO...
|
| |
 |
Stored Procedure con parámetro
por
adario21
Respuesta recibida el [26/08/2009 10:23:33]
|
 |
Hola Quisiera escribir una sentencia SQL que me haga inserciones de datos, por ejemplo en una tabla clientes...PERO quiero que éstos datos sean los parámetros de entrada de un Stored Procedure quien es realmente el encargado de hacer el ingreso/escritura sobre la base de datos.
Pregunta: cómo tengo que escribir el código SQL? Pregunta: cómo tengo que escribir el parámetro? Pregunta: cómo corro todo ésto (el orden y los comandos?)
Gracias!
|
| |
 |
Problemas Con El Default
por
joan
Respuesta recibida el [22/10/2009 03:57:19]
|
 |
chekeen mi codigo aber qe onda esqe no le puedo soe principiante :/
create database Abarrotes
create table Productos ( Producto int identity (1,1) primary key not null, Nombre varchar (60) not null, Descripcion varchar (80) null, Existencias int not null check(Existencias>=0), Fecha datetime default(Getdate()) )
create procedure Insercion (@Nombre varchar(60), @Descripcion varchar(80), @Existencias int, @Fecha datetime as declare @fecha datetime default Getdate()) insert into Productos(Nombre, Descripcion, Existencias, Fecha) values (@Nombre, @Descripcion, @Existencias, @Fecha)
y quando qiero introducir la fecha x default me marka erro! :(
|
| |
 |
Q riko estas!
por
Jorge Sarmiento
Respuesta recibida el [06/11/2009 02:29:25]
|
 |
Saludos guapo!
|
| |
 |
Madre mía
por
Pensador
Respuesta recibida el [11/11/2009 06:59:58]
|
 |
Esto está lleno de julandrones!
|
| |
 |
GRAN DUDA
por
Manuel Mancipe
Respuesta recibida el [11/12/2009 08:10:08]
|
 |
gracias por estos tutoriales, tengo una pregunta por q dice "Un procedimiento es un subprograma que ejecuta una acción especifica y que no devuelve ningún valor" creo que esto no es verdad, por favor me pudieras clarificar mejor
|
| |
 |
+1 Manuel
por
Java
Respuesta recibida el [24/01/2010 02:30:02]
|
 |
Creo que los procedimientos ejecutan "acciones" que le mandes, y las funciones las operaciones.
|
| |
 |
Excelente tutorial
por
Mati
Respuesta recibida el [20/02/2010 01:53:21]
|
 |
gracias por tu aporte excelente tutorial me saco de un gran apuro, sigue ayudandonos.
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Procedimientos almacenados en PL/SQL |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
117717 |
Fecha de publicación:
28/06/2006 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios 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:
111
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
812
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
767
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
674
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
3185
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
14575
|
Comentarios:
7
|
Archivo:
Articulos
|
Visitas:
1502
|
Comentarios:
3
|
Archivo:
Articulos
|
|
Visitas:
697
|
Comentarios:
2
|
Archivo:
Articulos
|
|
Visitas:
369
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2035
|
Comentarios:
2
|
Archivo:
Articulos
|
|
|
 |
|
 |