Practica Procedimientos - Almacenados - SQL - Server
Practica Procedimientos - Almacenados - SQL - Server
Practica Procedimientos - Almacenados - SQL - Server
PROCEDIMIENTOS ALMACENADOS
Guiones de creación
En lugar de restaurar una base de datos, alternativamente, puede usar scripts
para crear las bases de datos AdventureWorks independientemente de la
versión.
https://docs.microsoft.com/en-us/sql/samples/adventureworks-install-configure?view=sql-
server-ver15&tabs=ssms
USE AdventureWorks
Select name, Color, ListPrice, SellStartDate
FROM Production.Product
WHERE SellStartDate > '1/1/2003'
ORDER BY SellStartDate, Name
exec PROCE1_CARNET;
Nota: los procedimientos almacenados los puede encontrar en la base de datos donde los
trabaja, en la opción programación.
Ejemplo2:
USE library
CREATE PROCEDURE ingreso(
IN apellido varchar(15), IN nombre varchar(15))
BEGIN
insert into member(lastname,firstname)
values(apellido,nombre)
SELECT 'eL REGISTRO SE HA INGRESADO CORRECTAMENTE'
Como puede ver el procedimiento pide dos parámetros apellido y nombre del tipo varchar,
cuando se llame al procedimiento deberá digitarse primero el apellido y después el nombre,
porque ese es el nombre que se le ha fijado en el desarrollo del procedimiento. Para llamar
este procedimiento utilice la siguiente sentencia.
USE library
EXEC ingreso 'Moran','Gustavo'
Para comprobar que se ingresó el registro utilice la siguiente instrucción y busque el registro
que acaba de ingresar con el procedimiento.
Los BEGIN y END son el inicio y fin del if Y RETURN provoca la salida del procedimiento tras
enviar un mensaje a la pantalla del usuario.
Entre las reglas para la programación de procedimientos almacenados, cabe citar las
siguientes:
• La propia definición CREATE PROCEDURE puede incluir cualquier número y tipo de
instrucciones SQL, excepto las siguientes instrucciones CREATE, que no pueden ser
utilizadas nunca dentro de un procedimiento almacenado:
CREATE DEFAULT CREATE TRIGGER
CREATE PROCEDURE CREATE VIEW
CREATE RULE
• Se puede crear otros objetos de base de datos dentro de un procedimiento almacenado.
Puede hacer referencia a un objeto creado en el mismo procedimiento almacenado,
siempre que se cree antes de que se haga referencia al objeto.
• Puede hacer referencia a tablas temporales dentro de un procedimiento almacenado.
• Si ejecuta un procedimiento almacenado que llama a otro procedimiento almacenado,
el procedimiento al que se llama puede tener acceso a todos los objetos creados por el
primer procedimiento, incluidas las tablas temporales.
• El número máximo de parámetros en un procedimiento almacenado es de 1,024.
• El número máximo de variables locales en un procedimiento almacenado está limitado
únicamente por la memoria disponible.
Una variable local de Transact-SQL es un objeto que contiene un valor individual de datos de
un tipo específico
Las variables locales se definen debajo de la sentencia BEGIN y llevan el prefijo DECLARE.
Ejemplo 3:
Con el procedimiento anterior se verifico lo de ingresar valores nulos, ahora vamos a ver que el
nombre completo del usuario (nombre y apellido) no debe repetirse en la base de datos, para
ello utilizamos el siguiente código.
Procedimiento
La tabla productos contiene información general de los productos y la tabla pedidos contiene
la información del pedido que se realiza de un cierto producto.
Ejemplos de datos
PRODUCTOS
Proc01 manzanas 10
PEDIDOS
Ped01 Proc01 2
RESOLVER
Ejemplo:
Proc01 manzanas 10
Proc01 manzanas 4
create table ARTICULO (
ARTICULO CHAR(255) not null,
DESCRIPCION CHAR(255),
PESO FLOAT,
constraint PK_ARTICULO primary key (ARTICULO)
);
create table ARTICULO_BODEGA (
BODEGA VARCHAR2(15) not null,
ARTICULO CHAR(255) not null,
constraint PK_ARTICULO_BODEGA primary key (BODEGA, ARTICULO)
);
create index ARTICULO_BODEGA_FK on ARTICULO_BODEGA (
BODEGA ASC
);
create index ARTICULO_BODEGA_FK2 on ARTICULO_BODEGA (
ARTICULO ASC
);
create table BODEGA (
BODEGA VARCHAR2(15) not null,
LINEA CHAR(38),
NOMBRE_BODEGA VARCHAR2(255),
EXISTENCIA FLOAT,
constraint PK_BODEGA primary key (BODEGA)
);
create index BODEGA_FACTURA_DETALLE_FK on BODEGA (
LINEA ASC
);
create table COBRADOR (
COBRAR VARCHAR2(15) not null,
NOMBRE_COBRADOR VARCHAR2(255),
constraint PK_COBRADOR primary key (COBRAR)
);
create table FACTURA (
TIPO_FACTURA CHAR(1) not null,
NOFACTURA CHAR(12) not null,
VENDEDOR VARCHAR2(15),
COBRAR VARCHAR2(15),
ASIENTO_CONTABLE CHAR(10),
COMISION BINARY_DOUBLE,
TOTAL_PESO BINARY_DOUBLE,
IMPUESTO BINARY_DOUBLE,
FECHA DATE,
MONTO_DESCUENTO BINARY_DOUBLE,
PORC_DESCUENTO BINARY_DOUBLE,
TOTAL_FACTURA BINARY_DOUBLE,
DIRECCION_FACTURA CHAR(1),
SIGNO BINARY_DOUBLE,
OBSERVACIONES CHAR(1),
USUARIO_CREADOR CHAR(10),
TIPO_CAMBIO DATE,
FCONTROL_CREACION DATE,
FCONTRO_MODIFICACION DATE,
VALOR_IVA FLOAT,
constraint PK_FACTURA primary key (TIPO_FACTURA, NOFACTURA)
);
Crear un nuevo proyecto “ligaconsp”, añade la libreria *.jar de conexion JDBC y crea una nueva
clase “database.java”, el código para esta clase es:
package ligaconsp;
import java.sql.*;
Esta clase está dividida en dos partes, el constructor de la clase, donde realizamos la conexión
a la base de datos y un método al que llamamos “procedure”, este método es el que nos
permite ejecutar el procedimiento almacenado en SQL desde Java, esta comentado para que
se pueda entender más fácilmente.
package ligaconsp;
public class Main {
public static void main(String[] args) {
database db = new database();
String r = db.procedure("Abelardo Lopez", 1999);
System.out.println(r);
r = db.procedure("Jaime Rodriguez", 1990);
System.out.println(r);
r = db.procedure("Flabio Portal", 1994);
System.out.println(r);
}
}
ACTIVIDAD FINAL
Al ejecutar el proyecto en netbeans, se debe obtener como resultado: