Curso de SQL Server 2005 Developer e Introducción a VB.net Práctica No.1. Escribiendo y ejecutando código transact sql desde el Query Analyzer EELLAA BBO RRAADDO PPO RR: FFEECCHHAA DDEE EELLAABB OO RR AACCI : Ing. Giovanni Sáenz. IIÓÓNN: 24 de Junio del 2008 (Fecha Original). COLLAABBORRAACI IIÓ NN YY VEERRSSI IIÓNN ORRI IIGI IINNAALL EENN 200000: : Ing. Marvin Lira Chamorro y Ing. Glenda Barrios OBB JJEETTI II VVOO DDEE LLAA PRRÁCTTI ICA: : Con esta guía se pretende que identifiquen las diferencias de colores utilizados por el Query Analyzer para el código Transact SQL. Tabla de Contenido: Tabla de Contenido: 1 Crear Procedimientos Almacenados: 2 Definición del Procedimiento Almacenado (con Parámetro) 2 Llamado para Ejecutar el Procedimiento Almacenado 3 Resultado del Procedimiento Almacenado 3 Funciones 4 Funciones de tipo Escalar 4 Definición de la Función 4 Ejecución de la Función 5 La Primera Forma para Correr la Funcion es: 6 La segunda forma, es utilizando variables y pasando el valor a esta misma: 6 Trabajando con DDL y DML. 7 Práctica No.2. 7 Tareas a Realizar: 16 Bibliografía: 16 Departamento de Arquitectura y Sistemas de Aplicaciones 1
Crear Procedimientos Almacenados: Definición del Procedimiento Almacenado (con Parámetro) El primer paso, es buscar donde esta la programación de la base de datos, en este caso, es la base de datos Northwin, luego, hacer click derecho sobre procedimientos almacenados y crear uno nuevo: Ver página siguiente: Sobre la ventana que aparece, agregara el siguiente código: Departamento de Arquitectura y Sistemas de Aplicaciones 2
El código, es el siguiente: CREATE PROCEDURE [dbo].[spgetnombre_parametro] (@pnombre as Varchar(120)) AS Begin print @pnombre End Llamado para Ejecutar el Procedimiento Almacenado El código es el siguiente: exec dbo.spgetnombre_parametro 'Giovanni Saenz' Resultado del Procedimiento Almacenado Departamento de Arquitectura y Sistemas de Aplicaciones 3
Funciones Funciones de tipo Escalar Ir a la parte superior de la venta y buscar nueva consulta, ahí usted agregara el código correspondiente a la función: Definición de la Función CREATE FUNCTION dbo.fnccalculaedad_parametro (@pnombrecompleto Varchar(120), @pfechanacimiento Datetime, @PFechaActual Datetime) RETURNS Varchar(240) AS BEGIN Declare @NombreEdad varchar(240) Set @NombreEdad = @pnombrecompleto + ' tiene la edad de ' + Cast(DATEDIFF(YEAR,@pfechanacimiento, @pfechaactual) as Varchar) + ' anios ' return (@NombreEdad) END Departamento de Arquitectura y Sistemas de Aplicaciones 4
Al ejecutarse la Instrucción, se agrega como parte de las funciones: Ejecución de la Función La Ejecución de la función, se realiza con la siguiente consulta: Select dbo.fnccalculaedad_parametro('glenda Barrios Aguirre', '24/06/1973', getdate()) set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ---------------------------------- ALTER FUNCTION [dbo].[fncgetcategoriaslineal2] ( @categoria nvarchar(15) ) RETURNS TABLE Return (select CategoryId, CategoryName From Categories where CategoryName = @categoria) Departamento de Arquitectura y Sistemas de Aplicaciones 5
La Primera Forma para Correr la Funcion es: SELECT * FROM [Northwin].[dbo].[FncGetCategoriasLineal2] ('Confections') La segunda forma, es utilizando variables y pasando el valor a esta misma: Declare @categoria as Varchar(15) Set @categoria = 'Confections' SELECT * FROM [Northwin].[dbo].[FncGetCategoriasLineal2] (@Categoria) Para ambos casos, el resultado es el mismo: Departamento de Arquitectura y Sistemas de Aplicaciones 6
Trabajando con DDL y DML. Práctica No.2. Utilizando la sintaxis de DDL y DML para llevar a cabo acciones de creado de TABLAS, actualización de tablas, inserción, modificación y eliminación de registros. OBBJJEETTI IVO DEE LLA PRÁCTTI ICA:: Con esta guía se pretende dar a conocer la sintaxis del Lenguaje de definición de Datos (DDL), Lenguaje de Control de datos (DCL), y Lenguaje de Modelación de Datos (DML) Pasos a seguir: En el SQL Query Analyzer, tenga seleccionado la base de datos Northwind. Paso No.1: Crear una tabla llamada ScpDigitacionProyecto, antes debe verificarse que exista la tabla ScpDigitacionProyecto. if exists (Select * From dbo.sysobjects Where id = object_id ('[dbo].[scpdigitacionproyecto]') and OBJECTPROPERTY (id, 'IsUserTable') = 1) Drop table [dbo].[scpdigitacionproyecto] GO Departamento de Arquitectura y Sistemas de Aplicaciones 7
Paso No.2: Crear la tabla ScpDigitacionProyecto con la siguiente estructura. CREATE TABLE [dbo].[scpdigitacionproyecto] ( ScpDigitacionProyecto_ID int IDENTITY (1, 1) PRIMARY KEY CLUSTERED NOT NULL, MesAsistencia smallint NULL, AnioAsistencia int NULL, Asistencia char (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, objproyectoid int NOT NULL ) ON [PRIMARY] GO Paso No.3 : Visualizar en modo texto la estructura de la tabla Notas SELECT * From ScpDigitacionProyecto Paso No.4: Modificar la tabla ScpDigitacionProyecto, al agregar las columnas Fecha de tipo Datetime y MesPrueba de tipo int. ALTER TABLE [dbo].[scpdigitacionproyecto] ADD Fecha Datetime NULL, MesPrueba Int GO Para verificar los valores de la Tabla, vuelva a ejecutar: SELECT * From ScpDigitacionProyecto Departamento de Arquitectura y Sistemas de Aplicaciones 8
Paso No.5: Eliminar de la tabla ScpDigitacionProyecto eliminar la columna MesPrueba. ALTER TABLE [dbo].[scpdigitacionproyecto] DROP Column MesPrueba GO Para verificar los valores de la Tabla, vuelva a ejecutar: SELECT * From ScpDigitacionProyecto Paso No.6: Insertando registros en Digitacion Proyecto. (MesAsistencia, AnioAsistencia, (1, 2005, (2, 2005, Asistencia, objproyectoid) (3, 2005, Departamento de Arquitectura y Sistemas de Aplicaciones 9
(4, 2005, (5, 2005, (6, 2005, (7, 2005, (8, 2005, (9, 2005, Al Ejecutar el código, se genera el siguiente mensaje: Departamento de Arquitectura y Sistemas de Aplicaciones 10
Para verificar los valores de la Tabla, vuelva a ejecutar: SELECT * From ScpDigitacionProyecto Paso No.7: Crear una tabla a partir del contenido y la estructura de la tabla ScpDigitacionProyecto Select * Into ScpDigitacionProyectoCopia From ScpDigitacionProyecto Departamento de Arquitectura y Sistemas de Aplicaciones 11
Paso No.8: Insertando los registros de la tabla ScpDigitacionProyectoCopia a ScpDigitacionProyecto INSERT Into ScpDigitacionProyecto (Select MesAsistencia, AnioAsistencia, Asistencia, ObjProyectoID From ScpDigitacionProyectoCopia) Departamento de Arquitectura y Sistemas de Aplicaciones 12
Paso No.9: Insertando los registros de la tabla ScpDigitacionProyectoCopia a ScpDigitacionProyecto INSERT Into ScpDigitacionProyecto (Select MesAsistencia, AnioAsistencia, Asistencia, ObjProyectoID From ScpDigitacionProyectoCopia) Para mostrar el contenido de Ambas Tablas: SELECT * From ScpDigitacionProyecto SELECT * From ScpDigitacionProyectoCopia Paso No.10: Actualizar la tabla ScpDigitacionProyecto al agregar un constraint (Representa una restricción que se puede imponer a uno o varios objetos DataColumn) para la columna ScpDigitacionProyectoID Departamento de Arquitectura y Sistemas de Aplicaciones 13
ALTER TABLE ScpDigitacionProyecto WITH NOCHECK ADD CONSTRAINT Mes_Check CHECK (MesAsistencia >=1) GO EXEC sp_help ScpDigitacionProyecto GO Paso No.11: Compruebe que el constraint MesAsistencia funciona. Para esto vaya al Enterprise Manager e Intente ingresar un registro con un valor menor que 1 para el campo MesAsistencia. Paso No.12: Elminar el Constraint creado para el MesAsistencia. ALTER TABLE ScpDigitacionProyecto DROP CONSTRAINT Mes_Check Departamento de Arquitectura y Sistemas de Aplicaciones 14
Paso No.13: Alterar una tabla para Modificar el tipo de dato de un campo. EN este caso se cambio el tamaño del campo Asistencia a 10 caracteres, además se puso requerido. ALTER TABLE [dbo].[scpdigitacionproyecto] ALTER COLUMN Asistencia Char(10) NOT NULL Muestre la Tabla: Select * From ScpDigitacionProyecto Paso No.14: Visualizar el contenido de la tabla de Digitación Proyecto. Select * From ScpDigitacionProyecto Paso No.15: Cambiar el valor del anioasistencia 2005 a 2006 para esto hay que buscar todos los registros de digitación proyecto donde AnioAsistencia = 2005. UPDATE ScpDigitacionProyecto Set AnioAsistencia = 2006 Where AnioAsistencia = 2005 Paso No.16: Compruebe que la actualización se llevo a cabo de forma satisfactoria para esto en el enterprise manager o en otra ventana del query analyzer haga un select a la tabla ScpDigitacionProyecto. Departamento de Arquitectura y Sistemas de Aplicaciones 15
Tareas a Realizar: Ahora que tiene dos posibles formas de presentar Datos y hacer rastreos o búsquedas, hacer los ajustes a sus proyectos y presente: a.- Procedimientos Almacenados (para fines prácticos y crear habilidades se definen diez procedimientos con Parámetros y cinco sin parámetros). b.- Funciones recordar que estas pueden ser escalares o retornen tabla (Al igual que el caso anterior, es valido la cantidad, así mismo la distribución). c.- Deben presentar cada estudiantes ocho Triggers (esto se deben programar en cada tabla, la definición y como se implemente, eso depende del grupo). d.- Se deben Cumplir todos los incisos anteriores, al igual de la cantidad de registros y todo lo que se refiere a la Información que se debe Administrar en las Tablas. Bibliografía: En este momento queda pendiente, y en la semana se brindara los detalles (son Ocho textos los que se utilizaron para esta información, más los datos de los profesores). Mi agradecimiento, tanto a los Señores Representantes en Nicaragua de MC Graw Hill: Engel Hurtado y de la Prentice Hall Francisco Mayorquín, quienes siempre muy gustosamente me han facilitado toda la información en Libros y textos frescos, no me he olvidado de cada uno de los títulos, sin falta el lunes los incluiré a esta lista. A todos Gracias. Departamento de Arquitectura y Sistemas de Aplicaciones 16