procedimientos almacenado en sql server

20
PROCEDIMIENTO ALMACENAD EN SQL SERVER

Upload: john-alava-torres

Post on 20-Feb-2017

109 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: Procedimientos almacenado en sql  server

PROCEDIMIENTO ALMACENAD EN SQL

SERVER

Page 2: Procedimientos almacenado en sql  server

EJEMPLO DE PROCEDIMIENTO ALMACENADO Cree un procedimiento que imprima el total de una

factura al ingresar el código de la factura. Debe crear una tabla FACTURA y RENGLON. Donde

renglón es el detalle de cada articulo comprado y su precio. Por lo tanto una factura es especificada por muchos renglones. Teniendo esto claro vamos a escribir nuestro procedimiento, en el cual sumaremos el resultado de cada renglón en la factura con respecto al parámetro de entrada.

Page 3: Procedimientos almacenado en sql  server

Como ves, hemos hecho una sencilla consulta en la tabla RENGLON para sumar el subtotal de cada producto en la factura. En el WHERE hemos hecho una comparación del ID de la factura con el parámetro ingresado al procedimiento.

CREATE PROCEDURE total_factura (@id_factura INT) AS BEGIN SELECT SUM(UNIDADES*PRECIO) FROM RENGLON WHERE RENGLON.IDFACTURA = @id_factura; END;

Page 4: Procedimientos almacenado en sql  server

Ejecute un procedimiento almacenado

EXEC total_factura 1;

Es decir

Exec < nombre del procedimiento>EXECUTE total_factura 1

Page 5: Procedimientos almacenado en sql  server

MODIFICAR UN PROCEDIMIENTO

Usaremos ALTER PROCEDURE para modificar procedimientos en SQL Server. Con esta sentencia se busca cambiar el cuerpo y las características de un procedimiento ya creado:

ALTER PROCEDURE nombre_procedimiento <nuevas características> AS <nuevo bloque de instrucciones>

Page 6: Procedimientos almacenado en sql  server

MODIFICAR UN PROCDIMIENTO

Vamos a, modificar un procedimiento llamado modificar_cliente, el cual actualiza los datos de los registros de una tabla llamada CLIENTE. Lo que haremos será agregarle la clausula WITH ENCRYPTION para que el procedimiento sea encriptado, ya e no lo está.Veamos:

ALTER PROCEDURE modificar_cliente (@id_cliente INT, @nombre_cliente VARCHAR(20),@apellido_cliente VARCHAR(20))

WITH ENCRYPTION AS UPDATE CLIENTE SET 

NOMBRE=@nombre_cliente,APELLIDO=@apellido_cliente WHERE IDCLIENTE=@id_cliente;

Una vez modificado veremos si podemos consultar el cuerpo de modificar_cliente con el procedimiento del sistema sp_helptext

Page 7: Procedimientos almacenado en sql  server

Borrar Un Procedimiento

Para borrar un procedimiento en SQL Server se usa la sentencia DROP PROCEDURE:

DROP PROCEDURE nombre_procedimiento Sencillo no? Miremos un pequeño ejemplo. Borraremos un

procedimiento llamado retiro_fondos:

DROP PROCEDURE retiro_fondos

Page 8: Procedimientos almacenado en sql  server

BORRAR PROCEDIMIENTOS ALMACENADOS Una buena práctica antes de crear un procedimiento es comprobar si ya existe en la

base de datos. Para ello usaremos la función OBJECT_ID de SQL Server. Esta función comprueba la existencia de cualquier tipo de objeto dentro de la base de datos, ya sea una tabla, procedimiento, restricción, función, etc.

OBJECT_ID recibe como primer parámetro el nombre del objeto en tipo varchar, y en el segundo parámetro recibe el tipo de objeto. Por ejemplo, para referirnos a un procedimiento se usa el carácter ‘P’.

Ahora extendamos el ejemplo visto con anterioridad con el siguiente condicional de existencia:

IF(OBJECT_ID('retiro_fondos','P') IS NOT NULL) DROP PROCEDURE retiro_fondos; ELSE PRINT 'El procedimiento no existe';

Page 9: Procedimientos almacenado en sql  server

CREACIÓN DE VISTAS/CREATE VIEW

Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla tiene un conjunto de definiciones, y almacena datos físicamente. Una vista también tiene un conjunto de definiciones, que se construye en la parte superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos físicamente.

La sintaxis para la creación de una vista es la siguiente:

Page 10: Procedimientos almacenado en sql  server
Page 11: Procedimientos almacenado en sql  server

LECCIÒN FILA 1

Page 12: Procedimientos almacenado en sql  server

LECCION 2 - IN - BETWEEN - LIKE - IS NULL -DISTINC > mayor que < menor que

Page 13: Procedimientos almacenado en sql  server

Seleccionar el nombre y el salario de los empleados que ganen más de $ 800 que no tengan comisión nula y que su apellido contenga como segunda letra la o.

  SELECT NOMBRE, SALARIO FROM EMPLEADO WHERE Salario > 800 AND Comision is NOT NULL AND Nombre LIKE '_o%'

Page 14: Procedimientos almacenado en sql  server

¿Cuál es el nombre y salario de los empleados que tienen igual salario que P. PLUAS?

  Select A.nombre, A.Salario From Empleado A Where A.Salario= ( Select B.Salario From Empleado B Where B.nombre=P.PLUAS)

Page 15: Procedimientos almacenado en sql  server

La sentencia SELECT DISTINCT Dentro de una tabla, algunas columnas pueden contener valores duplicados. Esto no es un problema, algunas veces tu querras listar solo los valores diferentes (distintos) en la tabla La palabra DISTINCT puede ser usada como llave para regresar solo los valores distintos(diferentes). Sintaxis SQL SELECT DISTINCT SELECT DISTINCT nombre_columna(s) FROM nombre_table Ejemplo: SELECT DISTINCT Apellidos FROM Personas Abajo esta el resultado de la sentencia DISTINCT a la tabla "Personas":

SELECT DISTINCT Ciudad FROM Personas Abajo esta el resultado de la sentencia DISTINCT a la tabla "Personas":

Page 16: Procedimientos almacenado en sql  server

SQL WHERE

La sentencia where es usada para extraer solo los registros que cumplen con el criterio especificad

La Sintaxis SQL WHERE

SELECT *FROM PersonasWHERE Apellidos ='Trejo Lemus'

Page 17: Procedimientos almacenado en sql  server

SELECT *FROM PersonasWHERE P_id = 9

Page 18: Procedimientos almacenado en sql  server

Operador AND

SELECT * FROM PersonasWHERE Nombre='Marcel Abisag'AND Apellidos='Sobrevilla Trejo'

Page 19: Procedimientos almacenado en sql  server

Operador OR

  SELECT * FROM PersonasWHERE Nombre='Martha Beatriz'OR Nombre='Juana Elvira'

Page 20: Procedimientos almacenado en sql  server

SQL ORDER BY

SELECT nombre_columna(s)FROM nombre_tablaORDER BY nombre_column(s) ASC

SELECT nombre_columna(s)FROM nombre_tablaORDER BY nombre_column(s) DESC