Está en la página 1de 7

/* SQL 2 - SESION 2-*/

USE EduTec
GO

CREATE TABLE TA( a CHAR(1)PRIMARY KEY)


GO

CREATE TABLE TB( b CHAR(1) REFERENCES TA)


GO

CREATE TABLE TC( c CHAR(1))


GO

SELECT * FROM TA
SELECT * FROM TB
SELECT * FROM TC
GO

-- CREAR PROCEDIMIENTO

CREATE PROCEDURE Test1


AS
BEGIN TRAN
INSERT TC VALUES ('X')
INSERT TB VALUES ('X')
COMMIT TRAN
GO

-- EJECUTAR EL PROCEDIMIENTO

EXECUTE Test1
GO

-- MICROSOFT SQL

EXEC Test1
GO
-- SI SOLO HAY UNA INSTRUCCION

Test1
GO

--CONSULTAMOS LAS 3 TABLAS

SELECT * FROM TA
SELECT * FROM TB
SELECT * FROM TC
GO

--PARA QUE NO FALLE LA REFERENCIA

INSERT TA VALUES ('X')


GO

--CONSULTAMOS LAS 3 TABLAS


SELECT * FROM TA
SELECT * FROM TB
SELECT * FROM TC
GO

-- MICROSOFT SQL -- EJECUTAR EL PROCEDIMIENTO ALMACENADO

EXEC Test1
GO

-- MODIFICACION DE PROCEDIMIENTO

CREATE PROCEDURE Test2


AS
BEGIN TRAN
INSERT TC VALUES('Y')
IF (@@Error <> 0) GOTO on_error
INSERT TB VALUES ('Y')
IF(@@Error <> 0) GOTO on_error
Commit Tran
Return(0)
on_error:
Rollback tran
Return(1)
GO

-- Rollback tran : borrar la transaccion

--CONSULTAMOS LAS 3 TABLAS

SELECT * FROM TA
SELECT * FROM TB
SELECT * FROM TC
GO

exec Test2
GO

-- en tc no se agrego y

INSERT INTO TA VALUES ('Y')


GO

EXEC Test2
go

-- ejecuto otra vez

EXEC Test2
go

--CONSULTAMOS LAS 3 TABLAS

SELECT * FROM TA
SELECT * FROM TB
SELECT * FROM TC
GO
--procedimiento almacenados
-- parte 1

-- base de datos prueba

USE master
GO

drop database Pruebas


GO

CREATE DATABASE Pruebas


GO

USE Pruebas
GO

-- TABLA DE EJEMPLO CLIENTES

CREATE TABLE CLIENTES (


cod_cli INT NOT NULL,
nombre CHAR(30) NOT NULL,
ciudad VARCHAR(15) NOT NULL,
telefono VARCHAR(8) NULL)
GO

SELECT * FROM CLIENTES


GO

-- CLIENTES

insert into Clientes values(1,'Maria Euguren','Lima','3245876')


insert into Clientes values(2,'Alejandro Mezco Caballero','La Plata','4959554')
insert into Clientes values(3,'Daniela Velasquez Marquez','Arequipa','4791004')
insert into Clientes values(4,'Daniel Hacha Gonzales','Lima','4151004')
insert into Clientes values(5,'Jose Pe�a','Huaraz','4568741')
insert into Clientes values(6,'Pedro Perez','Huaraz','4568741')
GO

SELECT * FROM CLIENTES


GO

-- EJEMPLO DE STORED PROCEDURE


-- SIN RECIBIR NI DEVOLVER PARAMETROS

CREATE PROCEDURE LISTACLIENTES


AS
SELECT * FROM CLIENTES
GO

-- LO PROBAMOS

LISTACLIENTES
GO

-- CREAR SP QUE PRESENTE UNA LISTA DE LOS PROVEEDORES DE LA BD


-- NORTHWIND Y EL MONTO TOTAL DE VENTAS CORRESPONDIENTES A LOS
-- PRODUCTOS RELACIONADOS CON CADA PROVEEDOR
USE Northwind
GO

select
S.CompanyName AS PROVEEDOR,
ROUND(SUM(OD.UnitPrice* OD.Quantity*(1-OD.DISCOUNT)),2) AS [MONTO VENTAS]
FROM Suppliers S
INNER JOIN Products P ON S.SupplierID = P.SupplierID
INNER JOIN [ORDER DETAILS] OD ON P.ProductID = OD.ProductID
GROUP BY S.CompanyName
GO

CREATE PROCEDURE VENTASPROVEEDOR


AS
SELECT
S.CompanyName AS PROVEEDOR,
ROUND(SUM(OD.UnitPrice* OD.Quantity*(1-OD.DISCOUNT)),2) AS [MONTO VENTAS]
FROM Suppliers S
INNER JOIN Products P ON S.SupplierID = P.SupplierID
INNER JOIN [ORDER DETAILS] OD ON P.ProductID = OD.ProductID
GROUP BY S.CompanyName
GO

-- EJECUTAMOS PROCEDIMEINTO

VENTASPROVEEDOR
GO

-- CREAR UN PROCEDIMIENTO ALMACENADO QUE PRECENTE EL


-- TOTAL DE VENTAS POR REGIONES

CREATE PROCEDURE TOTALVENTASREGION


AS
SELECT
R.RegionDescription AS [Nombre de Region],
ROUND(SUM(OD.UnitPrice * OD.Quantity * (1 - OD.Discount) ),2) AS [Monto de
ventas]
FROM Region R
INNER JOIN Territories T ON R.RegionID=T.RegionID
INNER JOIN EmployeeTerritories ET ON T.TerritoryID=ET.TerritoryID
INNER JOIN Employees E ON
ET.EmployeeID=E.EmployeeID
INNER JOIN Orders O ON
E.EmployeeID=O.EmployeeID
INNER JOIN [Order Details] OD ON O.OrderID=OD.OrderID
GROUP BY R.RegionDescription
ORDER BY 2 DESC
GO

-- ejecutamos

TOTALVENTASREGION
GO

--
CREATE PROCEDURE Venta_Reg_Cate
AS
SELECT
R.RegionDescription AS [Nombre de Region],
C.CategoryName,
ROUND(SUM(OD.UnitPrice * OD.Quantity * (1 - OD.Discount) ),2) AS [Monto de
ventas]
FROM Region R
INNER JOIN Territories T ON R.RegionID=T.RegionID
INNER JOIN EmployeeTerritories ET ON T.TerritoryID=ET.TerritoryID
INNER JOIN Employees E ON
ET.EmployeeID=E.EmployeeID
INNER JOIN Orders O ON
E.EmployeeID=O.EmployeeID
INNER JOIN [Order Details] OD ON O.OrderID=OD.OrderID
INNER JOIN Products P ON OD.ProductID = P.ProductID
INNER JOIN Categories C ON P.CategoryID =
C.CategoryID
WHERE O.OrderDate BETWEEN '19970101' AND '19970630'
GROUP BY R.RegionDescription, C.CategoryName
HAVING R.RegionDescription IN ('Northern','Southern')
ORDER BY 1,2
GO

Venta_Reg_Cate
go

-----------------------------------------------------------------------------------
-----------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------
-------------------------------------------------
TAREA----------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------
-- crear un procedimiento almacenado que presente el monto total de ventas por
tienda por autor
-- debe de mostrar el nombre de la tienda y los apellidos y los nombres de los
autores (bd pubd)

-----------------------------------------------------------------------------------
----------------------------------------------

-- PROCEDIMIENTOS ALMACENADOS
-- CON PARAMETROS QUE RECIBES
--(PARAMETROS DE ENTRADA)

USE Pruebas
go

select * from CLIENTES


go

CREATE PROCEDURE Agregarclientes


(@xcod INT,
@xnombre CHAR(30),
@xciudad VARCHAR(15),
@xtelefono VARCHAR(8) = '000-0000')
AS
INSERT INTO CLIENTES
VALUES(@xcod,@xnombre,@xciudad,@xtelefono)
SELECT * FROM CLIENTES
GO

--

SELECT * FROM CLIENTES


GO

-- EJECUTAMOS EL PROCEDIMIENTO

Agregarclientes
GO

-- ERROR

Agregarclientes 8
GO

-- ERROR

-- HAY QUE DARLE 4 VALORES DE ENTRADA

EXEC Agregarclientes 6, 'PEDRO PEREZ','HUARAZ','4568741'


GO

EXEC Agregarclientes 7, 'VILMA PEREZ','HUARAZ'


GO

--CREAR UN PROCEDIMIENTO ALAMCENADO EN LA BD EDUTEC QUE PERMITA INGRESAR UN


PROFESOR
--SI SE OMITIERA EL DATO DE LA DIRECCION, SU VALOR PREDETERMINADO SERA LIMA

USE EduTec
go

sp_help profesor
go

CREATE PROCEDURE INGRESARPROFESOR


(
@Cod char(4),
@Ape varchar(30),
@NomProfesor varchar(30),
@tel varchar(12),
@email varchar(50),
@dirprof varchar(50) = 'LIMA'
)
AS
INSERT INTO Profesor
(IdProfesor,ApeProfesor,NomProfesor,TelProfesor,EmailProfesor,DirProfesor)
VALUES
(@Cod,@Ape,@NomProfesor,@tel,@email,@dirprof)
SELECT * FROM Profesor
GO

SELECT * FROM Profesor


GO

EXEC INGRESARPROFESOR
'P050','ARIAS','MARIBEL','ABCD@YAHOO.ES','SAN ISIDRO'
GO

EXEC INGRESARPROFESOR
'P070','VILLALOVOS','ELITA','4667731','EDITA@YAHOO.ES'
GO

-- EN LA BASE DE DATOS NORTHWIN CREAR UN PROCEDIMIENTO ALMACENADO QUE PERMITA


INGRESAR UN PROVEEDOR
-- CONSIDERAR PARA EL DATO DEL PAIS,
-- COMO VALOR PREDETERMINADO PERU

USE Northwind
GO

SP_HELP SUPPLIERS

CREATE PROCEDURE AGREGARPROVEEDOR


(
@CompanyName NVarchar(40),
@Country Nvarchar(15) = 'PERU',
)
AS
INSERT INTO Suppliers
(CompanyName,Country)
VALUES
(@CompanyName,@Country)
SELECT * FROM Suppliers
go

--

También podría gustarte