viernes, 15 de julio de 2016

Procedimientos Almacenados




1. CONTENIDO
  •  Definición:
Conjunto de comandos que pueden ser ejecutados directamente en el servidor, es decir, será ejecutado por el servidor de Base de Datos y no por el programa cliente que lo accede, permitiendo la ejecución de una acción o conjunto de acciones específicas.
  • Sintaxis
Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE.
CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]
 AS
  • Administración de Procedimientos Almacenados

1.   Creación
Para crear un procedimiento en el Editor de consultas
  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
  2. En el menú Archivo, haga clic en Nueva consulta.
  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En este ejemplo se crea el mismo procedimiento almacenado que antes con otro nombre diferente.
CREATE PROCEDURE HumanResources.uspGetEmployeesTest2  
    @LastName nvarchar(50),  
    @FirstName nvarchar(50)  
AS  

    SET NOCOUNT ON; 
    SELECT FirstName, LastName, Department 
    FROM HumanResources.vEmployeeDepartmentHistory 
    WHERE FirstName = @FirstName AND LastName = @LastName 
    AND EndDate IS NULL; 
GO 

2. Modificación
Para modificar un procedimiento en el Editor de consultas
  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.
  2. Expanda Bases de datos, expanda la base de datos a la que pertenece el procedimiento. O bien, en la barra de herramientas, seleccione la base de datos en la lista de bases de datos disponibles. En este ejemplo, seleccione la base de datos AdventureWorks2012.
  3. En el menú Archivo, haga clic en Nueva consulta.
  4. Copie y pegue el ejemplo siguiente en el editor de consultas. El ejemplo crea el procedimiento uspVendorAllInfo, que devuelve los nombres de todos los proveedores en la base de datos Adventure Works Cycles, los productos que suministran, su solvencia y su disponibilidad.
El ejemplo modifica el procedimiento uspVendorAllInfo. La cláusula EXECUTE AS CALLER se quita y el cuerpo del procedimiento se modifica para devolver solo los proveedores que proporcionan el producto especificado. Las funciones LEFT y CASE permiten personalizar la apariencia del conjunto de resultados.

ALTER PROCEDURE Purchasing.uspVendorAllInfo 
    @Product varchar(25)  
AS 
    SET NOCOUNT ON; 
    SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name',  
    'Rating' = CASE v.CreditRating  
        WHEN 1 THEN 'Superior' 
        WHEN 2 THEN 'Excellent' 
        WHEN 3 THEN 'Above average' 
        WHEN 4 THEN 'Average' 
        WHEN 5 THEN 'Below average' 
        ELSE 'No rating' 
        END 
    , Availability = CASE v.ActiveFlag 
        WHEN 1 THEN 'Yes' 
        ELSE 'No' 
        END 
    FROM Purchasing.Vendor AS v  
    INNER JOIN Purchasing.ProductVendor AS pv 
      ON v.BusinessEntityID = pv.BusinessEntityID  
    INNER JOIN Production.Product AS p  
      ON pv.ProductID = p.ProductID  
    WHERE p.Name LIKE @Product 
    ORDER BY v.Name ASC; 
 GO 

3. Eliminación
Para eliminar un procedimiento en el Editor de consultas
  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.
  2. Expanda Bases de datos, expanda la base de datos a la que pertenece el procedimiento o bien, en la barra de herramientas, seleccione la base de datos en la lista de bases de datos disponibles.
  3. En el menú Archivo, haga clic en Nueva consulta.
  4. Obtenga el nombre del procedimiento almacenado para quitar en la base de datos actual. En el Explorador de objetos, expanda Programación y, a continuación, Procedimientos almacenados. Como alternativa, en el editor de consultas, ejecute la siguiente instrucción.

DROP PROCEDURE <stored procedure name>; 
GO 
  • Ejemplo
El siguiente ejemplo muestra un procedimiento almacenado en SQL Server que inserta un registro en la tabla ‘Inventario’:
 USE [bd_inventario]
 GO
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 -- =============================================
 -- Autor: Yosbany
 -- Fecha:
 -- Descripción:  
 -- =============================================
 ALTER PROCEDURE [dbo].[Insertar_Inventario]

 --Parámetros de entrada

 @Descripcion CHAR(15) = '',
 @No_inv CHAR(15),
 @Marca CHAR(15),
 @Modelo CHAR(15),
 @No_serie CHAR(15),
 @Puesto CHAR(3),
 @id INT = 0
 AS
 BEGIN
 SET NOCOUNT ON;

 -- Sentencia del procedimiento
 INSERT INTO Inventario (id, Descripcion, No_inventario, Marca, Modelo, No_serie, Puesto)
 VALUES(@id, @Descripcion, @No_inv, @Marca, @Modelo, @No_serie, @Puesto);
 END

2. RESUMEN
Un procedimiento almacenado (stored procedure en inglés) es un programa (oprocedimiento) almacenado físicamente en una base de datos. Su implementación varía de un gestor de bases de datos a otro.
  Características
Se almacenan en la propia Base de Datos y constituyen un objeto más dentro de esta. Tienden a mejorar el rendimiento de los sistemas producto a que reducen en intercambio entre cliente y servidor. Los procedimientos almacenados son reutilizables, de manera que los usuarios mediante la aplicación cliente no necesitan relanzar los comandos individuales, sino que pueden llamar el procedimiento para ejecutarlo en el servidor tantas veces como sea necesario.

  Utilidades
Los procedimientos almacenados son muy útiles sobre todo en arquitecturas cliente/servidor donde hay un servidor muy potente el cual se puede aprovechar para ejecutar procesos, consultas y actualizaciones complejas en la base de datos.

3. SUMMARY
A stored procedure (stored procedure) is a program (o procedimiento) physically stored in a database. Its implementation varies from one database manager to another.
characteristics
They are stored in the database itself and constitute a subject within it. They tend to improve the performance of product systems that reduce exchange between client and server. Stored procedures are reusable, so that users using the client application need not relaunch the individual commands, but they can call the procedure to run on the server as many times as necessary.
Utilities
Stored procedures are very useful especially in client / server architectures where there is a very powerful server which can be exploited to execute processes, complex queries and updates in the database.

4. RECOMENDACIONES

Ø Posibles usos que pueden darse a estos objetos de la base de datos

·         Por ejemplo, si deseamos obtener un reporte complejo que incluya instrucciones condicionales y cálculos complejos con datos obtenidos de varias tablas, un procedimiento almacenado es nuestro mejor aliado.
·         También se pueden ejecutar complejos procesos que a veces tardan horas cuando son ejecutados desde el cliente, ya que en tales casos la información debe pasar del servidor al cliente y viceversa.
·         Casi siempre las computadoras servidores son poderosas máquinas con mucha memoria, discos rápidos y uno o más procesadores también muy rápidos. Por lo tanto, al ejecutar los procesos mediante procedimientos almacenados estamos aprovechando toda esa capacidad de cómputo disponible en el hardware del servidor.

Ø Algunos casos en que pueden resultar particularmente útiles

·         Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operación en la base de datos. Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan procedimientos almacenados para todas las operaciones comunes.
·         Esto proporciona un entorno seguro y consistente, y los procedimientos pueden asegurar que cada operación se loguea apropiadamente. En tal entorno, las aplicaciones y los usuarios no obtendrían ningún acceso directo a las tablas de la base de datos, sólo pueden ejectuar algunos procedimientos almacenados.

5. CONCLUSIONES

·         El procedimiento almacenado nos sirve para que la consulta que se guarde pueda ser llamada con el nombre que se le fue asignado.
·        También observe que el procedimiento en el gestor Oracle es muy diferente al que se utiliza en el SQL, algunas de las sentencias que cambian son el BEGIN Y EL END.

6. APRECIACIÓN DEL EQUIPO

Para este trabajo de investigación fue sencillo ya que conté con material específicamente sobre el tema e investigue un poco más en Internet, espero te ayude.

7. BIBLIOGRAFIA O LINKOGRAFIA
http://www.ecured.cu/Procedimientos_almacenados
Ver Diapositivas Aqui



sábado, 9 de julio de 2016

Vistas









1.CONTENIDO
  •  Definición:
Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto.
  • Sintaxis
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]  
[ WITH <view_attribute> [ ,...n ] ]  
AS select_statement  
[ WITH CHECK OPTION ]  
[ ; ] 
 
<view_attribute> ::=  
    [ ENCRYPTION ] 
    [ SCHEMABINDING ] 
    [ VIEW_METADATA ]      
}  
  • Administración de Vistas
  1. Creación
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:
CREATE VIEW "NOMBRE_VISTA" AS "Instrucción SQL";
La “Instrucción SQL” puede ser cualquiera de las instrucciones SQL que hemos descrito en esta guía de referencia.
Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla:
Tabla Customer                                                          
Nombre de Columna
Tip de Datos
First_Name
char(50)
Last_Name
char(50)
Address
char(50)
City
char(50)
Country
char(25)
Birth_Date
datetime
y deseamos crear una vista denominada V_Customer que contiene sólo las columnas First_Name, Last_Name y País de esta tabla, ingresaríamos
CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer;
Ahora tenemos una vista llamada V_Customer con la siguiente estructura:
View V_Customer
Nombre de Columna
Tip de Datos
First_Name
char(50)
Last_Name
char(50)
Country
char(25)
Podemos utilizar también una vista para aplicar uniones a dos tablas. En este caso, los usuarios sólo ven una vista en vez de dos tablas, y la instrucción SQL que los usuarios necesitan emitir se vuelve mucho más simple. Digamos que tenemos las siguientes dos tablas:
Tabla Store_Information                                     
Store_Name
Sales
Txn_Date
Los Angeles
1500
05-Jan-1999
San Diego
250
07-Jan-1999
Los Angeles
300
08-Jan-1999
Boston
700
08-Jan-1999
Tabla Geography
Region_Name
Store_Name
East
Boston
East
New York
West
Los Angeles
West
San Diego

2. Modificación
Modifica una vista creada anteriormente. Esto incluye una vista indizada. ALTER VIEW no afecta a desencadenadores ni procedimientos almacenados dependientes y no cambia permisos.

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ] [ ; ]  
  
<view_attribute> ::=   
{   
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]       
}


3. Eliminación

USE AdventureWorks2012 ;  
GO  
IF OBJECT_ID ('HumanResources.EmployeeHireDate', 'V') IS NOT NULL  
DROP VIEW HumanResources.EmployeeHireDate;  
GO  
  • Ejemplos
En el siguiente ejemplo creamos la vista "vista_empleados", que es resultado de una combinación en la cual se muestran 4 campos:

create view vista_empleados as
  select (apellido+' '+e.nombre) as nombre,sexo,                    
   s.nombre as seccion, cantidadhijos
   from empleados as e
   join secciones as s
   on codigo=seccion

Para ver la información contenida en la vista creada anteriormente tipeamos:
 select *from vista_empleados;
Podemos realizar consultas a una vista como si se tratara de una tabla:
 select seccion,count(*) as cantidad
  from vista_empleados;
  • Creación de la tabla base

CREATE TABLE wide_tbl(
a int PRIMARY KEY, b int, c int, d int, e int, f int, g int, h int, i int,
j int, k int, l int, m int, n int, o int, p int, q int, r int,s int,t int, u int, v int, w int, z int)
GO

– Vista sobre la tabla base donde hacemos partición vertical (nos quedamos solo con lo que nos interesa)
CREATE VIEW v_abc WITH SCHEMABINDING AS
SELECT a, b, c
FROM dbo.wide_tbl
WHERE a BETWEEN 0 AND 1000           
GO
CREATE UNIQUE CLUSTERED INDEX i_abc ON v_abc(a)
GO

2.RESUMEN
Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto.
Entonces, una vista almacena una consulta como un objeto para utilizarse posteriormente. Las tablas consultadas en una vista se llaman tablas base. En general, se puede dar un nombre a cualquier consulta y almacenarla como una vista.
Una vista suele llamarse también tabla virtual porque los resultados que retorna y la manera de referenciarlas es la misma que para una tabla.
Las vistas permiten:
- ocultar información: permitiendo el acceso a algunos datos y manteniendo oculto el resto de la información que no se incluye en la vista. El usuario opera con los datos de una vista como si se tratara de una tabla, pudiendo modificar tales datos.
- simplificar la administración de los permisos de usuario: se pueden dar al usuario permisos para que solamente pueda acceder a los datos a través de vistas, en lugar de concederle permisos para acceder a ciertos campos, así se protegen las tablas base de cambios en su estructura.
- mejorar el rendimiento: se puede evitar tipear instrucciones repetidamente almacenando en una vista el resultado de una consulta compleja que incluya información de varias tablas.                                                            

3.SUMMARY
A view is an alternative for displaying data from multiple tables. A view is a virtual table that stores a query. The data accessible through the view is not stored in the database as an object.
Then, a view stores a query as an object for use later. The consulted tables in a view called base tables. In general, you can name any query and store it as a view.
A view is also called a virtual table because the results returned reference them and how is the same as for a table.
Views allow:
- Hide information: allowing access to some data and keeping hidden the rest of the information is not included in the view. The user operates a view data as if it were a table, may modify such data.
- Simplify management of user permissions: You can give the user permissions so you can only access data through views, instead of granting permissions to access certain fields, so the base tables changes are protected in their structure.
- Improve performance: you can avoid repeatedly typing instructions stored in a view the result of a complex query that includes information from multiple tables.

4.RECOMENDACIONES
  • Al crear una vista, SQL Server verifica que existan las tablas a las que se hacen referencia en ella.
  • Se aconseja probar la sentencia "select" con la cual definiremos la vista antes de crearla para asegurarnos que el resultado que retorna es el imaginado.
Existen algunas restricciones para el uso de "create view", a saber:
  • no puede incluir las cláusulas "compute" ni "compute by" ni la palabra clave "into";
  • no se pueden crear vistas temporales ni crear vistas sobre tablas temporales.
  • no se pueden asociar reglas ni valores por defecto a las vistas.
  •  no puede combinarse con otras instrucciones en un mismo lote.
5.CONCLUCIONES
  • Usar vistas para realizar todas las operaciones de manipulación de tablas (inserción, actualización, borrado, consulta) es lo mejor, es lo correcto, es lo ideal. ¿Por qué? porque eso nos da un control total, 100%, sobre lo que cada usuario puede hacer o no hacer.
  • De esta manera los usuarios nunca, y por ningún motivo, acceden directamente a las tablas. Todos los accesos lo hacen a través de las vistas. Y en nuestras vistas podemos usar la cláusula WHERE para establecer condiciones. Por lo tanto, solamente podrán hacer lo que específicamente queremos que puedan hacer. Y nada más.
6.APRECIACION DEL EQUIPO
  • Se sabe que las vistas se consultan como las tablas y no aceptan parámetros. 
  • Para el usuario final, ver los datos en modo de "vista" o de tabla, es exactamente igual, pero no para el DBA, quien debe velar por la integridad de los mismos. Puede, y de hecho sucede, que un usuario pueda consultar una tabla a través de una "vista", pero no de un modo directo con una instrucción "SELECT".
  • Se puede concluir que esta investigación fue exitosa,muchas gracias espero te ayude 

7.GLOSARIO O TÉRMINOS

Select: Que se utiliza para recuperar datos.
Create View: Sirve para crear una nueva vista
Into: Crea una nueva tabla en el grupo de archivos predeterminados e insertos las filas resultantes de la consulta en ella

Where: Nos evita tener que consultar todas las filas de la tabla para poder obtener un resultado en particular.                                     

8.BIBLIOGRAFIA O LINKOGRAFIA
https://msdn.microsoft.com/es-pe/library/ms187956.aspx
Ver Diapositivas Aqui
https://www.slideshare.net/secret/1vcxCkcNSQw46C