Módulo 2: Introducción A La Programación de SQL Server: Contenido

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 60

Módulo 2: Introducción

a la programación de
SQL Server
Contenido

Introducción 1
Diseño de la arquitectura de
aplicaciones corporativas 2
Herramientas de programación de
SQL Server 7
El lenguaje de programación
Transact-SQL 10
Elementos de Transact-SQL 11
Elementos adicionales del lenguaje 19
Formas de ejecutar instrucciones
Transact-SQL 32
Procedimientos recomendados 43
Práctica A: Introducción a Transact-SQL 44
Repaso 52
La información contenida en este documento está sujeta a modificaciones sin previo aviso. A
menos que se indique lo contrario, los nombres de las compañías, productos, personas, personajes
y datos mencionados son ficticios, y no representan de ningún modo a ninguna persona, compañía,
producto o acontecimiento reales. Es responsabilidad del usuario el cumplimiento de todas las
leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida o
transmitida de ninguna forma, ni por ningún medio, ya sea electrónico o mecánico, con ningún
propósito, sin la previa autorización por escrito de Microsoft Corporation. Sin embargo, si su único
medio de acceso es electrónico, se le concede permiso para imprimir una copia.

Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros
derechos de propiedad intelectual sobre el contenido de este documento. El suministro de este
documento no le otorga ninguna licencia sobre estas patentes, marcas, derechos de autor, u otros
derechos de propiedad intelectual, a menos que ello se prevea en un contrato por escrito de licencia
de Microsoft.

 2000 Microsoft Corporation. Reservados todos los derechos.

Microsoft, ActiveX, BackOffice, MS-DOS, PowerPoint, Visual Basic, Visual C++, Visual Studio,
Windows y Windows NT son marcas comerciales registradas o marcas comerciales de Microsoft
Corporation en los Estados Unidos o en otros países.

Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus
respectivos propietarios.

Jefe de proyecto: Rich Rose


Diseñadores de instrucciones: Rich Rose, Cheryl Hoople, Marilyn McGill
Ingenieros de diseño de software de instrucciones: Karl Dehmer, Carl Raebler,
Rick Byham
Dirección técnica: Karl Dehmer
Expertos en la materia: Karl Dehmer, Carl Raebler, Rick Byham
Artista gráfico: Kirsten Larson (Consultora independiente)
Directora de edición: Lynette Skinner
Editor: Wendy Cleary
Editor de copias: Edward McKillop (S&T Consulting)
Director de producción: Miracle Davis
Coordinadora de producción: Jenny Boe
Soporte de producción: Lori Walker (S&T Consulting)
Jefe de pruebas: Sid Benavente
Prueba de los materiales del curso: TestingTesting123
Automatización del aula: Lorrin Smith-Bates
Director creativo, servicios Media/Sim: David Mahlmann
Dirección de desarrollo de Web: Lisa Pease
Especialista en creación de CD: Julie Challenger
Soporte en línea: David Myka (S&T Consulting)
Director de localización: Rick Terek
Coordinador de operaciones: John Williams
Soporte de fabricación: Laura King, Kathy Hershey
Director principal del producto, Administración de publicación: Bo Galford
Director principal del producto, Base de datos: Margo Crandall
Jefe de grupo, Infraestructura del curso: David Bramble
Jefe de grupo del producto, Desarrollo de contenido: Dean Murray
Director general: Robert Stewart
Módulo 2: Introducción a la programación de SQL Server iii

Notas para el instructor


Presentación: Este módulo proporciona a los alumnos una introducción a la arquitectura
45 minutos de aplicaciones de nivel empresarial y a Transact-SQL como lenguaje de
programación. Transact-SQL es un lenguaje que sirve para la definición,
Práctica: tratamiento y control de datos. Se supone que los alumnos están familiarizados
30 minutos con los conceptos básicos de programación y de ANSI-SQL, como las
funciones, operadores, variables e instrucciones de control de flujo, que se
tratan en el curso 2317A de Microsoft Official Curriculum (MOC), Consultas
en Microsoft SQL Server 2000 mediante Transact-SQL. Los alumnos también
aprenderán diferentes maneras de ejecutar Transact-SQL.
En la práctica, los alumnos escribirán instrucciones SELECT básicas,
modificarán un archivo de comandos y utilizarán funciones del sistema.
Después de completar este módulo, los alumnos serán capaces de:
 Describir los conceptos relacionados con la arquitectura de aplicaciones
de nivel empresarial.
 Describir las herramientas principales de programación de Microsoft®
SQL Server™ 2000.
 Explicar la diferencia entre las dos principales herramientas de
programación de SQL Server.
 Describir los elementos básicos de Transact-SQL.
 Describir el uso de variables locales, operadores, funciones, instrucciones
de control de flujo y comentarios.
 Describir las diversas formas de ejecutar instrucciones Transact-SQL.

Material y preparación
Esta sección proporciona el material y las tareas de preparación que se
necesitan para impartir este módulo.

Material necesario
Para impartir este módulo, necesitará el material siguiente:
 Archivo 2329A_02.ppt de Microsoft PowerPoint®.
 Archivo de ejemplo C:\Moc\2329A\Demo\D02_Ex.sql, que contiene todas
las secuencias de comandos de ejemplo del módulo, excepto cuando se
indique lo contrario.

Tareas de preparación
Para preparar este módulo, deberá:
 Leer todo el material del mismo.
 Completar la práctica.
 Completar todas las demostraciones.
 Practicar la presentación.
 Revisar las notas del producto relevantes incluidas en el disco compacto
Material del instructor.
iv Módulo 2: Introducción a la programación de SQL Server

Desarrollo del módulo


Para presentar este módulo utilice la estrategia siguiente:
 Diseño de la arquitectura de aplicaciones corporativas
Señale a los alumnos que pueden diseñar aplicaciones mediante capas
lógicas y servicios. Haga énfasis en que el diseño físico de una aplicación
depende de la arquitectura que se elija y de cómo se distribuya la lógica
empresarial entre los componentes de la aplicación.
 Herramientas de programación de SQL Server
Presente el Analizador de consultas de SQL Server. Demuestre sus
funciones básicas y explique que los alumnos pueden ejecutar una
consulta total o parcialmente, ejecutarla en una cuadrícula y crear un
plan de ejecución.
Presente la herramienta de la línea de comandos osql. Si los alumnos
preguntan acerca de la herramienta isql, indique que la herramienta osql
utiliza la interfaz de programación de aplicaciones (API) de Conectividad
abierta de bases de datos (ODBC, Open Database Connectivity) para
conectarse a SQL Server, lo que proporciona mayor funcionalidad, mientras
que la herramienta isql utiliza la API anterior de biblioteca de base de datos
para conectarse a SQL Server.
 El lenguaje de programación Transact-SQL
Indique a los alumnos que Transact-SQL es el lenguaje de programación
que se utiliza en SQL Server.
Como se espera que los alumnos estén familiarizados con los principios de
la programación, el módulo no trata la programación básica ni la escritura
de instrucciones. En su lugar, proporciona una introducción e indica en qué
se diferencia básicamente Transact-SQL del lenguaje de la Organización
internacional de estándares (ISO, International Standards Organization)
ANSI SQL.
 Elementos de Transact-SQL
Esta sección repasa los elementos del lenguaje de Transact-SQL. Como los
alumnos deben estar familiarizados con los fundamentos de programación,
describa brevemente las instrucciones del Lenguaje de definición de datos
(DDL, Data Definition Language), Lenguaje de manipulación de datos
(DML, Data Manipulation Language) y Lenguaje de control de datos
(DCL, Data Control Language) y explique los nombres de objetos de
SQL Server y las directrices de denominación de los objetos de base de
datos.
Módulo 2: Introducción a la programación de SQL Server v

 Elementos adicionales del lenguaje


Describa las variables locales y del sistema, los distintos operadores y
funciones, el lenguaje de control de flujo y los caracteres de comentario.
El módulo trata las principales palabras clave o cláusulas que se utilizan
normalmente; remita a los alumnos a los Libros en pantalla de SQL Server
para que obtengan información detallada acerca de otras palabras clave.
 Formas de ejecutar instrucciones Transact-SQL
Familiarice a los alumnos con las distintas formas de ejecutar las
instrucciones Transact-SQL. Éstas incluyen las instrucciones generadas
dinámicamente, el envío de lotes, la ejecución de secuencias de comandos y
la ejecución de transacciones. Siempre que sea posible, demuestre estos
métodos mediante el Analizador de consultas SQL.

Información de personalización
En esta sección se identifican los requisitos de instalación de las prácticas para
un módulo y los cambios de configuración que ocurren en los equipos de los
alumnos durante estas prácticas. Esta información pretende ayudarle a duplicar
o personalizar el material del curso de Microsoft Official Curriculum (MOC).

Importante La práctica de este módulo también depende de la configuración


del aula especificada en la sección Información de personalización que se
encuentra al final de la Guía de configuración del aula para el curso 2329A,
Programación de una base de datos Microsoft SQL Server 2000.

Preparación de la práctica
No hay requisitos de preparación de la práctica que afecten a la duplicación o
personalización.

Resultados de las prácticas


No hay cambios de configuración en los equipos de los alumnos que afecten a
la duplicación o personalización.
Módulo 2: Introducción a la programación de SQL Server 1

Introducción
Objetivo del tema
Proporcionar una
introducción a los temas
y objetivos del módulo.  Diseño de la arquitectura de aplicaciones corporativas
Explicación previa  Herramientas de programación de SQL Server
En este módulo, aprenderá
acerca de la arquitectura  El lenguaje de programación Transact-SQL
de aplicaciones de nivel
empresarial y acerca de  Elementos de Transact-SQL
Transact-SQL como
lenguaje de programación.  Elementos adicionales del lenguaje
 Formas de ejecutar instrucciones Transact-SQL

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Después de completar este módulo, el alumno será capaz de:
 Describir los conceptos relacionados con la arquitectura de aplicaciones de
nivel empresarial.
 Describir las herramientas principales de programación de Microsoft®
SQL Server™ 2000.
 Explicar la diferencia entre las dos principales herramientas de
programación de SQL Server.
 Describir los elementos básicos de Transact-SQL.
 Describir el uso de variables locales, operadores, funciones, instrucciones
de control de flujo y comentarios.
 Describir las diversas formas de ejecutar instrucciones Transact-SQL.
2 Módulo 2: Introducción a la programación de SQL Server

 Diseño de la arquitectura de aplicaciones


corporativas
Objetivo del tema
Presentar los temas de
esta sección.
Explicación previa  Identificación de las capas lógicas
En esta sección aprenderá  Diseño de capas físicas
a describir la arquitectura de
aplicaciones corporativas.  Acceso a datos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server suele formar parte de una aplicación distribuida. El diseño de una
implementación de SQL Server para una solución empresarial dependerá de la
arquitectura que elija y de cómo va a distribuir la lógica entre las aplicaciones.
Módulo 2: Introducción a la programación de SQL Server 3

Identificación de las capas lógicas


Objetivo del tema
Identificar las capas lógicas
de la arquitectura de Capa de Capa de lógica Capa de servicios
aplicaciones corporativas. presentación de la aplicación de datos
Explicación previa de datos
La arquitectura de
aplicaciones corporativas Aplicaciones Componentes creados Lógica de acceso
Windows de forma personalizada a datos
contiene capas lógicas. personalizadas
Aplicaciones y servicios Almacenamiento
Exploradores integrados de datos
Web Reglas empresariales
Reglas de datos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
La arquitectura de aplicaciones corporativas contiene capas lógicas.
Las capas representan la presentación de los datos, la lógica de la aplicación
y los servicios de datos.

Capa de presentación de datos


La capa de presentación de datos se conoce también como servicios de
usuario y permite a los usuarios examinar y manipular los datos. Los dos
tipos principales de aplicaciones de cliente son las aplicaciones personalizadas
de Microsoft Windows® y los exploradores Web. La capa de presentación de
datos utiliza los servicios que proporciona la capa de lógica de la aplicación.

Capa de lógica de la aplicación


Esta capa contiene la lógica de la aplicación que define reglas y procesos.
Permite la escalabilidad; en lugar de que muchos clientes tengan acceso
directo a una base de datos (mediante el uso de una conexión independiente
por cliente), los clientes pueden conectar con servicios empresariales que, a su
vez, conectan con los servidores de datos. Los servicios empresariales pueden
ser componentes creados de forma personalizada o aplicaciones y servicios
integrados, como los servicios Web. La capa de lógica de la aplicación puede
contener también componentes que utilicen servicios de transacciones, servicios
de mensajería o servicios de administración de objetos y conexiones.

Capa de servicios de datos


Los servicios de datos incluyen la lógica de acceso a los datos y el
almacenamiento de los datos. Estos servicios pueden incluir procedimientos
almacenados de SQL Server para administrar el tráfico de datos y la integridad
del servidor de base de datos.
4 Módulo 2: Introducción a la programación de SQL Server

Diseño de capas físicas


Objetivo del tema Modelo de dos capas
Ilustrar las formas de
incorporar capas lógicas
en modelos físicos.
Explicación previa
Existen diversas formas
en que pueden colocarse Application Logic
físicamente capas lógicas
Presentación de datos Servicios de datos
en un entorno distribuido.
Modelo de múltiples capas

IIS Componentes

Lógica de
Presentación de datos la aplicación Servicios de datos
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Existen diversas formas en que pueden colocarse físicamente capas lógicas en
un entorno distribuido. Aunque todas las capas lógicas pueden residir en un
equipo, por lo general se distribuyen en un modelo de dos capas o en uno de
múltiples capas. Esto permite implementar la lógica, las reglas empresariales y
el procesamiento allí donde son más efectivos.

Uso de un modelo de dos capas


Si utiliza este modelo, puede ubicar la presentación y la lógica de la aplicación
en el cliente y los servicios de datos en el servidor. Opcionalmente, la lógica de
la aplicación se puede ubicar en los procedimientos almacenados del servidor.
También puede utilizarse una solución mixta en la que la lógica de la aplicación
se divide entre el cliente y el servidor.
Los diseños de dos capas son menos comunes que los de múltiples capas,
debido a la creciente popularidad de las aplicaciones de Internet. No son
escalables y pueden no ser tan fáciles de mantener como los diseños de
múltiples capas.

Uso de un modelo de múltiples capas


El modelo de múltiples capas, también conocido como tres capas o n capas,
permite distribuir la lógica entre aplicaciones. Las reglas empresariales pueden
ser independientes del cliente o de la base de datos. Cuando este modelo se
aplica a Internet, puede dividir los servicios de presentación entre un cliente
explorador y un servidor Web de Servicios de Microsoft Internet Information
Server (IIS); el servidor Web da formato a las páginas Web que muestra el
explorador.
El modelo de múltiples capas es escalable para grandes bases de clientes y
muchas aplicaciones, y permite repartir la carga de trabajo entre muchos
equipos. Un modelo de múltiples capas es fácil de administrar porque permite
aislar un cambio a una regla empresarial sin que afecte a las otras. Además, una
actualización a una página ASP en un servidor Web actualiza automáticamente
todos los clientes.
Módulo 2: Introducción a la programación de SQL Server 5

Acceso a datos
Objetivo del tema Aplicaciones
Aplicaciones yy componentes
componentes Explorador
Explorador
Ilustrar las diversas formas
de tener acceso a los datos. Cliente
Access Excel personalizado IIS
IIS
Explicación previa Datos
Puede tener acceso a datos Consumi- ActiveX
ActiveX Data
Data Objects
Objects (ADO)
(ADO)
corporativos mediante dores
clientes previamente
creados o clientes Datos Proveedores
Proveedores de
de datos
datos OLE
OLE DB
DB (Servicios)
(Servicios)
personalizados. Proveedores
Procesadores Servicios
Cursores de consultas empresariales

Proveedores
Proveedores de
de datos
datos OLE
OLE DB
DB (Datos)
(Datos)
Active Otros proveedores
ODBC SQL Server Jet Directory Exchange Excel de OLE DB

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las tecnologías de Microsoft le permiten tener acceso a datos corporativos
mediante una amplia gama de clientes ya creados o clientes personalizados
que utilizan una interfaz de programación de acceso a datos.

Uso de clientes creados previamente


Puede utilizar aplicaciones cliente previamente creadas para tener acceso a
datos en SQL Server. La lógica de recuperación de los datos es una parte de
la aplicación cliente.
Microsoft Office 2000 incluye Microsoft Access y Microsoft Excel. Cuando
estas aplicaciones son parte de una solución de múltiples capas, se utilizan
principalmente en los servicios de presentación. Sin embargo, puede también
utilizarlas en la lógica de la aplicación y en los servicios de datos. Estas
aplicaciones permiten a los usuarios examinar datos del lado del servidor y
realizar consultas ad hoc. Puede utilizarlas para recuperar datos de SQL Server
o como cliente en un diseño de múltiples capas. También puede utilizar
Office 2000 como entorno de desarrollo para la creación de aplicaciones de
acceso a datos.
Access y Excel son ejemplos de clientes previamente creados que ofrecen una
amplia gama de funciones. También puede utilizar clientes previamente creados
que sólo ofrecen servicios de presentación, como un explorador que comunica
con IIS.

Creación de clientes personalizados


Puede crear clientes personalizados mediante una interfaz de programación de
acceso a datos y un entorno de desarrollo, como Microsoft Visual Studio®
versión 6.0 Enterprise Edition.
6 Módulo 2: Introducción a la programación de SQL Server

Acceso universal a datos


Es posible que los clientes personalizados necesiten tener acceso a muchos
orígenes de datos diferentes en la empresa. Microsoft Data Access Components
(MDAC) es una interfaz que permite la comunicación con diferentes orígenes
de datos. Puede utilizar los siguientes componentes MDAC para facilitar la
comunicación:
 OLE DB. Conjunto de interfaces de Servicios de componentes que
proporcionan acceso uniforme a los datos almacenados en diversos orígenes
de información. OLE DB permite el acceso a orígenes de datos relacionales
y no relacionales.
 Microsoft ActiveX® Data Objects (ADO). Una interfaz de programación
de aplicaciones (API) fácil de utilizar para cualquier proveedor de datos
OLE DB. Puede utilizar ADO en una extensa variedad de situaciones de
aplicaciones de acceso a datos. OLE DB y ADO permiten crear
componentes de datos que utilizan los servicios integrados proporcionados
por los Servicios de componentes.
ADO permite:
• Abrir y mantener conexiones.
• Crear consultas ad hoc.
• Ejecutar procedimientos almacenados en SQL Server.
• Recuperar resultados y utilizar cursores.
• Almacenar en caché los resultados de las consultas en el cliente.
• Actualizar filas de la base de datos.
• Cerrar conexiones.
Módulo 2: Introducción a la programación de SQL Server 7

Herramientas de programación de SQL Server


Objetivo del tema
Presentar las herramientas
de programación de  Analizador de consultas de SQL Server
SQL Server.
 Marcado personalizado de los elementos de sintaxis
Explicación previa
SQL Server dispone de  Varias ventanas de consulta
muchas herramientas de
programación. Las más  Vistas personalizables de los conjuntos de resultados
utilizadas incluyen el
Analizador de consultas  Planes gráficos de ejecución
SQL y la herramienta osql.
 Capacidad de ejecutar partes de una secuencia
de comandos
 Herramienta osql
 Utilidad de la línea de comandos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server 2000 ofrece varias herramientas de programación, que incluyen el
Analizador de consultas SQL y la herramienta osql. El Analizador de consultas
de SQL Server es una aplicación basada en Windows y osql es una herramienta
que se puede ejecutar desde el símbolo del sistema.

Analizador de consultas SQL


El Analizador de consultas SQL se puede utilizar para ver al mismo tiempo las
instrucciones de la consulta y los resultados. También puede utilizarse para
escribir, modificar y guardar secuencias de comandos de Transact-SQL.
El Analizador de consultas SQL proporciona las siguientes características:
 Marcado personalizado de los elementos de sintaxis. Cuando escribe una
consulta, el Analizador de consultas SQL resalta las palabras clave, las
cadenas de caracteres y otros elementos del lenguaje; se puede personalizar
la forma en que aparecen.
 Varias ventanas de consulta, cada una con su propia conexión.
 Vistas personalizables de los conjuntos de resultados. Los resultados se
pueden ver en forma de conjunto de resultados predeterminado o en una
cuadrícula para que pueda modificar los resultados como en una tabla.
 Planes gráficos de ejecución que describen cómo ejecuta SQL Server la
consulta. Se puede ver el plan optimizado de ejecución y comprobar la
sintaxis.
 Capacidad de ejecutar partes de una secuencia de comandos. Puede
seleccionar partes de una secuencia de comandos; SQL Server ejecutará
sólo esas partes.
8 Módulo 2: Introducción a la programación de SQL Server

Para su información Herramienta osql


La herramienta isql no La herramienta osql le permite escribir instrucciones Transact-SQL,
se incluye en este curso procedimientos del sistema y archivos de comandos. Utiliza Conectividad
porque utiliza bibliotecas abierta de bases de datos (ODBC, Open Database Connectivity) para
de bases de datos para comunicarse con el servidor. La herramienta se inicia directamente desde
comunicarse con el servidor
el sistema operativo con los argumentos que distinguen entre mayúsculas y
y no admite los tipos de
datos Unicode.
minúsculas que se enumeran a continuación. Una vez iniciada la herramienta
osql, acepta instrucciones Transact-SQL y las envía a SQL Server de forma
interactiva. Osql da formato y muestra los resultados en la pantalla. Utilice los
comandos QUIT o EXIT para salir de osql.
Sintaxis osql -U IdInicioSesión [-e] [-E] [-p] [-n] [-d nombreBD] [-q “consulta”]
[-Q “consulta”]
[-c finComando] [-h encabezados] [-w anchoColumna] [-s separadorCol]
[-t finTiempoEspera] [-m nivelError] [-L] [-?] [-r {0 | 1}]
[-H nombreEstacTr] [-P contraseña] [-R]
[-S nombreServidor] [-i archivoEntrada] [-o archivoSalida]
[-a tamañoPaquete]
[-b] [-O] [-l finTiempoEspera]

Nota Los parámetros de las instrucciones osql distinguen entre mayúsculas y


minúsculas.

La tabla siguiente describe los argumentos más utilizados.


Sugerencia
Mencione que los Argumento Descripción
argumentos pueden
ir precedidos del -U IdInicioSesión Es el identificador de inicio de sesión del usuario. En los
carácter guión (-) o identificadores de inicio de sesión se distinguen entre mayúsculas
barra diagonal (/). y minúsculas. Si no se utiliza la opción -U o -P, SQL Server
utiliza la cuenta de usuario de quien esté conectado actualmente,
con lo que no pedirá contraseña.
-E Utiliza una conexión de confianza en lugar de solicitar una
contraseña.
-? Muestra el resumen de la sintaxis de los modificadores de osql.
-P contraseña Es una contraseña especificada por el usuario. Si no se utiliza la
opción -P, osql pide una contraseña. Si se utiliza la opción -P al
final del símbolo del sistema sin ninguna contraseña, osql utiliza
la contraseña predeterminada (NULL). En las contraseñas se
distingue entre mayúsculas y minúsculas. Si no se utiliza la
opción -U o -P, SQL Server utiliza la cuenta de usuario de quien
esté conectado actualmente, con lo que no pedirá contraseña.
-S nombreServidor Especifica el servidor SQL con el que se va a conectar.
NombreServidor es el nombre del equipo servidor en la red.
Esta opción se requiere si se ejecuta osql desde un equipo
remoto de la red.
-i archivoEntrada Identifica el archivo que contiene un lote de instrucciones
Transact-SQL o de procedimientos almacenados. Puede utilizar
el símbolo menor que (<) en lugar de -i.
Módulo 2: Introducción a la programación de SQL Server 9

(continuación)
Argumento Descripción

-o archivoSalida Identifica el archivo que recibe el resultado de osql. En lugar


de -o se puede utilizar el símbolo mayor que (>). Si el archivo
de entrada es Unicode, el archivo de salida será Unicode si se
especifica -o. En caso contrario, el archivo de salida es OEM.
-b Especifica que cuando se encuentre un error, osql saldrá y
devolverá un valor ERRORLEVEL de Microsoft MS-DOS®.
El valor devuelto a la variable DOS ERRORLEVEL es 1 cuando
el mensaje de error de SQL Server tiene una gravedad de 10 o
más; en otro caso, el valor devuelto es 0. Los archivos por lotes
MS-DOS pueden probar el valor de DOS ERRORLEVEL y tratar
el error como corresponda.
10 Módulo 2: Introducción a la programación de SQL Server

El lenguaje de programación Transact-SQL


Objetivo del tema
Presentar el lenguaje
de programación de
SQL Server.  Implementación de SQL Server del estándar de nivel de
Explicación previa entrada ANSI de ISO
Transact-SQL es una
versión del lenguaje de
 Puede ejecutarse desde cualquier producto de nivel
programación SQL que de entrada
se utiliza exclusivamente
en SQL Server.
 Contiene elementos adicionales del lenguaje que
son únicos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL******
Transact-SQL es la implementación de SQL Server del estándar de nivel
de entrada ANSI-SQL de la Organización internacional de estándares
(ISO, International Standards Organization). Los elementos del lenguaje
Transact-SQL compatibles con ANSI-SQL se pueden ejecutar desde cualquier
producto de nivel de entrada compatible con ANSI-SQL. Transact-SQL
contiene también elementos adicionales del lenguaje que son únicos.

Importante Se recomienda que las secuencias de comandos que escriba


incluyan sólo instrucciones estándar de ANSI-SQL para aumentar la
compatibilidad y portabilidad de la base de datos.
Módulo 2: Introducción a la programación de SQL Server 11

 Elementos de Transact-SQL
Objetivo del tema
Presentar los elementos
básicos del lenguaje de
programación  Instrucciones del Lenguaje de control de datos
Transact-SQL.
 Instrucciones del Lenguaje de definición de datos
Explicación previa
Cuando escriba y ejecute  Instrucciones del Lenguaje de tratamiento de datos
instrucciones Transact-SQL,
utilizará algunos de estos  Nombres de los objetos de SQL Server
elementos del lenguaje.
 Directrices de denominación

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Cuando escriba y ejecute instrucciones Transact-SQL, utilizará instrucciones
de lenguajes diferentes, que se utilizan para determinar quién puede ver o
modificar los datos, crear objetos en la base de datos, y consultar o modificar
los datos. Debe seguir las reglas de asignación de nombres a objetos de
SQL Server y familiarizarse con las directrices de denominación de los objetos
de la base de datos.
12 Módulo 2: Introducción a la programación de SQL Server

Instrucciones del Lenguaje de control de datos


Objetivo del tema
Presentar a los alumnos las
instrucciones de DCL.
Explicación previa  Establecer o cambiar permisos
Las instrucciones de DCL  GRANT
controlan el acceso a los
objetos de la base de datos  DENY
y a la capacidad de ejecutar
ciertas instrucciones.  REVOKE
 De forma predeterminada, sólo se pueden ejecutar las
funciones sysadmin, dbcreator, db_owner y
db_securityadmin

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones del Lenguaje de control de datos (DCL, Data Control
Sugerencia Language) se utilizan para cambiar los permisos asociados con un usuario o
Para obtener más
información acerca de
función de la base de datos. En la tabla siguiente se describen las instrucciones
las instrucciones DDL, de DCL.
consulte el curso 2323A,
Instrucción Descripción
Administración de una
base de datos Microsoft GRANT Crea una entrada en el sistema de seguridad que permite a un usuario
SQL Server 2000. trabajar con datos o ejecutar determinadas instrucciones Transact-SQL.
DENY Crea una entrada en el sistema de seguridad que deniega un permiso de
una cuenta de seguridad e impide que el usuario, grupo o función herede
el permiso a través de su pertenencia a grupos o funciones.
REVOKE Quita un permiso concedido o denegado previamente.

De forma predeterminada, sólo los miembros de la función sysadmin,


dbcreator, db_owner o db_securityadmin pueden ejecutar instrucciones
DCL.
Ejemplo En este ejemplo se concede a la función public el permiso para consultar la
tabla Products.
USE Northwind
GRANT SELECT ON Products TO public
Módulo 2: Introducción a la programación de SQL Server 13

Instrucciones del Lenguaje de definición de datos


Objetivo del tema
Presentar a los alumnos las
instrucciones de DDL.
Explicación previa  Definir los objetos de base de datos
Las instrucciones de DDL  CREATE tipoObjeto nombreObjeto
definen una base de datos
mediante la creación de  ALTER tipoObjeto nombreObjeto
bases de datos, tablas y
tipos de datos definidos  DROP tipoObjeto nombreObjeto
por el usuario.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones del Lenguaje de definición de datos (DDL, Data Definition
Language) definen la base de datos mediante la creación de bases de datos,
tablas y tipos de datos definidos por el usuario. Las instrucciones de DDL se
utilizan también para administrar los objetos de la base de datos. Algunas
instrucciones de DDL son:
 CREATE tipoObjeto nombreObjeto
 ALTER tipoObjeto nombreObjeto
 DROP tipoObjeto nombreObjeto

De forma predeterminada, sólo los miembros de la función sysadmin,


dbcreator, db_owner o db_ddladmin pueden ejecutar instrucciones de
DDL. En general, se recomienda que no se permita a otras cuentas crear objetos
de base de datos. Si los usuarios crean sus propios objetos en las bases de datos,
se requiere que el propietario de cada objeto conceda los permisos adecuados a
cada usuario de esos objetos. Esto genera trabajo administrativo y debe evitarse.
Restringir los permisos de instrucciones a esas funciones también evita los
problemas de propiedad de los objetos que se pueden producir cuando el
propietario de un objeto se ha quitado de una base de datos o cuando el
propietario de un procedimiento almacenado o vista no es propietario de las
tablas subyacentes.
Si varias cuentas de usuario crean objetos, las funciones sysadmin y db_owner
pueden utilizar la función SETUSER para representar a otros usuarios o pueden
utilizar el procedimiento almacenado del sistema sp_changeobjectowner para
cambiar el propietario de un objeto.
14 Módulo 2: Introducción a la programación de SQL Server

Ejemplo La siguiente secuencia de comandos crea una tabla denominada Client en la


base de datos ClassNorthwind. Incluye las columnas CustomerID, Company,
Contact y Phone.
USE ClassNorthwind
CREATE TABLE Client
(CustomerID int, Company varchar(40), Contact varchar(30),
Phone char(12) )
Módulo 2: Introducción a la programación de SQL Server 15

Instrucciones del Lenguaje de tratamiento de datos


Objetivo del tema
Presentar a los alumnos
las instrucciones de DML.
Explicación previa  Utilizar cuando trabaje con datos de la base de datos
Las instrucciones de DML  SELECT
trabajan con los datos de
la base de datos.  INSERT
 UPDATE
 DELETE

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las instrucciones de DML trabajan con los datos de la base de datos.
Mediante estas instrucciones puede cambiar los datos o recuperar información.
Las instrucciones de DML incluyen:
 SELECT
 INSERT
 UPDATE
 DELETE

De forma predeterminada, sólo los miembros de las funciones sysadmin,


dbcreator, db_owner, db_datawriter y db_datareader pueden ejecutar
instrucciones de DML.
Ejemplo En este ejemplo se recupera el Id. de categoría, nombre de producto, Id. de
producto y precio por unidad de los productos de la base de datos Northwind.
SELECT CategoryID, ProductName, CategoryID, ProductID,
UnitPrice
FROM Northwind..Products
16 Módulo 2: Introducción a la programación de SQL Server

Nombres de los objetos de SQL Server


Objetivo del tema
Presentar las reglas de  Identificadores estándar
denominación de los objetos
de SQL Server (reglas de  El primer carácter debe ser alfabético
identificadores).
 Otros caracteres pueden incluir letras, números o
Explicación previa símbolos
SQL Server proporciona
varias reglas estándar de  Los identificadores que comienzan con símbolos tienen
denominación para los usos especiales
identificadores de objetos
y un método para utilizar
 Identificadores delimitados
delimitadores con los  Utilizar si los nombres contienen espacios incrustados
identificadores que no
son estándar.  Utilizar si las palabras reservadas están en partes de los
nombres
 Encerrar entre corchetes ([ ]) o entre comillas (" ")

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server proporciona varias reglas estándar de denominación para los
Sugerencia identificadores de objetos y un método para utilizar delimitadores con los
Demuestre cómo el
Analizador de consultas
identificadores que no son estándar. Si es posible, se recomienda utilizar los
SQL codifica con colores caracteres estándar de los identificadores para asignar nombres a los objetos.
los elementos de las
instrucciones para mostrar Identificadores estándar
palabras reservadas, Los identificadores estándar pueden contener de uno a 128 caracteres, incluidos
cadenas, etc. letras, símbolos (_, @, o #) y números. En los identificadores estándar no se
permite incluir espacios. Debe tener en cuenta las siguientes reglas para utilizar
identificadores:
 El primer carácter debe ser un carácter alfabético de la “a” a la “z” o de la
“A” a la “Z”.
 Después del primer carácter, los identificadores pueden incluir letras,
números o los símbolos @, $, # o _.
 Los nombres de los identificadores que comienzan con un símbolo tienen
usos especiales:
• Un identificador que comience con el símbolo @ indica una variable o
parámetro local.
• Un identificador que comience con el símbolo de almohadilla (#) indica
una tabla o procedimiento temporal.
• Un identificador que comience con una almohadilla doble (##) indica un
objeto global temporal.

Nota Los nombres de los objetos temporales no deben superar los 116
caracteres, con el símbolo de almohadilla (#) o el de doble almohadilla (##)
incluidos, porque SQL Server asigna a los objetos temporales un sufijo
numérico interno.
Módulo 2: Introducción a la programación de SQL Server 17

Identificadores delimitados
Si un identificador cumple todas las reglas de formato de los identificadores, se
puede utilizar con o sin delimitadores. Si un identificador no cumple alguna de
las reglas de formato de los identificadores, siempre debe estar delimitado.
Los identificadores delimitados se pueden utilizar en las situaciones siguientes:
 Cuando los nombres contienen espacios incrustados.
 Cuando se utilizan palabras reservadas en los nombres de los objetos o en
partes de los nombres de los objetos.

Los identificadores delimitados deben encerrarse entre corchetes o dobles


comillas cuando se utilizan en las instrucciones Transact-SQL.
 Los identificadores entre corchetes se delimitan mediante corchetes ([ ]):
SELECT * FROM [Nombre de tabla con blancos]

Nota Los delimitadores entre corchetes se pueden utilizar siempre, sin


importar el estado de la opción SET QUOTED_IDENTIFIER.

 Los identificadores entre comillas se delimitan mediante dobles


comillas (""):
SELECT * FROM "Nombre de tabla con blancos"

Los identificadores entre comillas sólo se pueden utilizar si la opción SET


QUOTED_IDENTIFIER está activada.
18 Módulo 2: Introducción a la programación de SQL Server

Directrices de denominación
Objetivo del tema
Presentar sugerencias
de directrices de  Utilizar nombres significativos cuando sea posible
denominación.
 Poner nombres cortos
Explicación previa
Las directrices de denomi-  Utilizar una convención de denominación clara y
nación de objetos de la sencilla
base de datos son
importantes para identificar
 Elegir un identificador que distinga los tipos de objetos
el tipo de objeto y para  Vistas
facilitar la resolución de
problemas y la depuración.  Procedimientos almacenados
Cuando asigne nombres a
los objetos de la base de  Hacer que los nombres de los objetos y de los usuarios
datos, debe… sean únicos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las directrices de denominación de objetos de la base de datos son importantes
para identificar el tipo de objeto y para facilitar la resolución de problemas y la
depuración. Cuando asigne nombres a los objetos de la base de datos, debe:
 Utilizar nombres significativos cuando sea posible.
Por ejemplo, podría asignar el nombre Chr_Name_Of_Customer a una
columna que contiene el nombre de los clientes. Un prefijo de Chr en el
nombre de la columna indica un tipo de datos character.
 Poner nombres cortos.
Por ejemplo, aunque el nombre de la columna Chr_Name_Of_Customer
es significativo, podría acortarlo a Name o Chr_Name.
 Utilizar una convención de denominación clara y sencilla.
Decida qué funciona mejor en su situación y sea coherente. Evite
convenciones de denominación demasiado complejas, ya que pueden
ser difíciles de recordar. Por ejemplo, puede quitar las vocales si el nombre
de un objeto es similar a una palabra clave (como un procedimiento
almacenado de copia de seguridad denominado Bckup).
 Elegir un identificador que distinga el tipo de objeto, especialmente para las
vistas y los procedimientos almacenados.
A menudo, los administradores de sistemas confunden las vistas con las
tablas, un descuido que puede causar problemas inesperados. Por ejemplo,
si crea una vista que combina dos tablas, podría asignarle el nombre
SoldView.
 Hacer que los nombres de los objetos y de los usuarios sean únicos.
Por ejemplo, evite crear una tabla Sales y una función sales en la misma
base de datos.
Módulo 2: Introducción a la programación de SQL Server 19

 Elementos adicionales del lenguaje


Objetivo del tema
Presentar información
general acerca de otros
elementos del lenguaje  Variables locales
Transact-SQL.
 Operadores
Explicación previa
Algunos de los elementos  Funciones
adicionales del lenguaje
Transact-SQL incluyen…  Ejemplos de funciones
 Elementos del lenguaje de control de flujo
 Comentarios

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Algunos de los elementos adicionales del lenguaje Transact-SQL incluyen
variables locales, operadores, funciones, instrucciones de control de flujo y
comentarios.
20 Módulo 2: Introducción a la programación de SQL Server

Variables locales
Objetivo del tema
Definir una variable y
describir cómo utilizarla.
Explicación previa  Usuario definido con la instrucción DECLARE
Las variables locales se  Valores asignados con la instrucción SET o Select
declaran en el cuerpo de
un programa por lotes o
procedimiento mediante la
instrucción DECLARE, y se DECLARE
DECLARE @vLastName
@vLastName char(20),
char(20),
les asignan valores con una @vFirstName
@vFirstName varchar(11)
varchar(11)
instrucción SET o SELECT. SET
SET @vLastName
@vLastName == 'Dodsworth'
'Dodsworth'
SELECT
SELECT @vFirstName
@vFirstName == FirstName
FirstName
FROM
FROM Northwind..Employees
Northwind..Employees
WHERE
WHERE LastName
LastName == @vLastName
@vLastName
PRINT
PRINT @vFirstName
@vFirstName ++ '' '' ++ @vLastName
@vLastName
GO
GO

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las variables son elementos del lenguaje con valores asignados.
Sugerencia En Transact-SQL se pueden utilizar variables locales.
Demuestre esto con el
Analizador de consultas Se puede definir una variable local en una instrucción DECLARE y, luego,
SQL. asignarle un valor inicial con la instrucción SET o SELECT. La instrucción
SET se utiliza cuando se conoce el valor deseado. La instrucción SELECT
se utiliza cuando hay que buscar el valor deseado en una tabla. Una vez
establecido el valor de la variable, puede utilizarse en la instrucción, proceso
por lotes o procedimiento en el que se declaró. Un lote es un conjunto de
instrucciones Transact-SQL que se emiten juntas y se ejecutan como un grupo.
Una variable local se muestra con un símbolo @ delante del nombre.
Sintaxis DECLARE {@variableLocal tipoDatos} [,...n]
SET @nombreVariableLocal = expresión
Ejemplo En el ejemplo siguiente se declaran dos variables. La instrucción SET se utiliza
para establecer el valor de la variable @vLastName y la instrucción SELECT
para buscar el valor de la variable @vFirstName. Después se imprimen ambas
variables.
DECLARE @vLastName char(20),
@vFirstName varchar(11)
SET @vLastName = 'Dodsworth'
SELECT @vFirstName = FirstName
FROM Northwind..Employees
WHERE LastName = @vLastName
PRINT @vFirstName + ' ' + @vLastName
GO

Resultado Anne Dodsworth


Módulo 2: Introducción a la programación de SQL Server 21

Operadores
Objetivo del tema
Mostrar cómo se utilizan los
operadores para tratar los
conjuntos de resultados.  Tipos de operadores
Explicación previa  Aritmético
Los operadores se pueden
utilizar para realizar cálculos  Comparación
o comparar valores.
 Concatenación de cadenas
 Lógico
 Niveles de precedencia de los operadores

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Los operadores son símbolos que realizan cálculos matemáticos,
concatenaciones de cadenas y comparaciones entre columnas, constantes
y variables. Puede combinarlos y utilizarlos en condiciones de búsqueda.
Cuando se combinan, el orden en el que SQL Server procesa los operadores
se basa en una precedencia predefinida.
Sintaxis parcial {constante | nombreColumna | función | (subconsulta)}
[{operadorAritmético | operadorCadena |
AND | OR | NOT}
{constante | nombreColumna | función | (subconsulta)}…]

Tipos de operadores
SQL Server admite cuatro tipos de operadores: aritmético, comparación,
concatenación de cadenas y lógico.

Sugerencia Aritmético
Transact-SQL admite Los operadores aritméticos realizan cálculos con columnas numéricas o
además operadores constantes. Transact-SQL admite operadores multiplicativos, que incluyen la
binarios. Se omiten aquí multiplicación (*), división (/) y módulo (%) (el número entero que queda al
porque su uso es poco dividir números enteros), y los operadores aditivos de adición (+) y
frecuente.
sustracción (-).
22 Módulo 2: Introducción a la programación de SQL Server

Comparación
Los operadores de comparación comparan dos expresiones. Las comparaciones
se pueden realizar entre variables, columnas y expresiones de tipo similar. La
siguiente tabla define los operadores de comparación de Transact-SQL.
Operador Significado

= Igual que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No igual que

Concatenación de cadenas
El operador de concatenación de cadenas (+) concatena valores de cadena. Las
funciones de cadena controlan todas las demás manipulaciones de la cadena.

Lógico
Los operadores lógicos AND, OR y NOT conectan las condiciones de búsqueda
de las cláusulas WHERE.

Sugerencia Niveles de precedencia de los operadores


Mencione que el nivel
Si utiliza varios operadores (lógicos o aritméticos) para combinar expresiones,
de precedencia de los
operadores lógicos es
SQL Server procesa los operadores en orden de precedencia, lo que puede
distinto en otros lenguajes afectar al valor resultante. La siguiente tabla muestra los niveles de precedencia
de programación. de los operadores (del nivel más alto al más bajo).
Tipo Operador Símbolo

Grupo Agrupación principal ()


Aritmético Multiplicativo */%
Aritmético Aditivo -+
Otros Concatenación de +
cadenas
Lógico NOT NOT
Lógico AND AND
Lógico OR OR

SQL Server resuelve primero las expresiones que se encuentran en la parte más
interna de la anidación. Además, si todos los operadores aritméticos de una
expresión comparten el mismo nivel de precedencia, el orden es de izquierda a
derecha.
Módulo 2: Introducción a la programación de SQL Server 23

Funciones
Objetivo del tema
Proporcionar información  Funciones de agregado
general acerca de las
funciones disponibles en SELECT
SELECT AVG
AVG (UnitPrice)
(UnitPrice) FROM
FROM Products
Products
SQL Server.
Explicación previa
Transact-SQL proporciona  Funciones escalares
muchas funciones que
devuelven información,
entre las que se incluyen… SELECT
SELECT DB_NAME()
DB_NAME() AS
AS 'database'
'database'

 Funciones de conjunto de filas

SELECT
SELECT **
FROM
FROM OPENQUERY
OPENQUERY
(OracleSvr,
(OracleSvr, 'SELECT
'SELECT ENAME,
ENAME, EMPNO
EMPNO FROM
FROM SCOTT.EMP')
SCOTT.EMP')

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Transact-SQL proporciona muchas funciones que devuelven información.
Sugerencia Las funciones toman parámetros de entrada y devuelven valores que se pueden
Mencione que los alumnos
pueden utilizar funciones en
utilizar en expresiones. El lenguaje de programación Transact-SQL proporciona
cualquier lugar en el que se tres tipos de funciones: de agregado, escalares y de conjunto de filas.
permita una expresión en
una instrucción SELECT. Funciones de agregado
Las funciones de agregado se ejecutan en una colección de valores, aunque
devuelven un único valor de resumen.
Ejemplo 1 En este ejemplo se determina el promedio de la columna UnitPrice de todos los
productos de la tabla Products.
SELECT AVG(UnitPrice) FROM Products

Resultado Products
28.8663

(1 filas afectadas)
24 Módulo 2: Introducción a la programación de SQL Server

Funciones escalares
Las funciones escalares se ejecutan con un único valor y devuelven también un
valor único. Estas funciones se pueden utilizar en todos aquellos lugares en los
que es válida una expresión. Las funciones escalares se pueden agrupar en las
categorías de la tabla siguiente.
Categoría de función Descripción

Configuración Devuelve información acerca de la configuración actual.


Cursor Devuelve información acerca de los cursores.
Fecha y hora Realiza una operación en un valor de entrada de fecha y hora,
y devuelve un valor de cadena, numérico o de fecha y hora.
Matemática Realiza un cálculo con los valores de entrada proporcionados
como parámetros para la función y devuelve un valor
numérico.
Metadatos Devuelve información acerca de la base de datos y sus
objetos.
Seguridad Devuelve información acerca de usuarios y funciones.
Cadena Realiza una operación sobre un valor de entrada de cadena
(char o varchar) y devuelve un valor de cadena o numérico.
Sistema Realiza operaciones y devuelve información acerca de
valores, objetos y configuraciones de SQL Server.
Estadísticas del Devuelve información estadística acerca del sistema.
sistema
Texto e imagen Realiza una operación en un valor de entrada o columna de
texto o imagen, y devuelve información acerca del valor.

Ejemplo 2 En este ejemplo de función de metadatos se devuelve el nombre de la base de


datos que se está utilizando actualmente.
SELECT DB_NAME() AS 'Database'

Resultado Database
Northwind

(1 filas afectadas)

Funciones de conjunto de filas


Las funciones de conjunto de filas se pueden utilizar como referencias de tablas
en una instrucción Transact-SQL.
Ejemplo 3 En este ejemplo se ejecuta una consulta distribuida para recuperar información
de la tabla EMP.
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT ENAME, EMPNO FROM
SCOTT.EMP')
Módulo 2: Introducción a la programación de SQL Server 25

Ejemplos de funciones
Objetivo del tema
Mostrar algunos de los
usos más comunes de
las funciones. SELECT
SELECT 'ANSI:'
'ANSI:' AS
AS Region,
Region,
CONVERT(varchar(30),
CONVERT(varchar(30), GETDATE(),
GETDATE(), 102)
102) AS
AS Style
Style
Explicación previa UNION
UNION
SELECT
SELECT 'European:',
'European:', CONVERT(varchar(30),
CONVERT(varchar(30), GETDATE(),
GETDATE(), 113)
113)
Las funciones se suelen UNION
UNION
utilizar para convertir datos SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(),
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111) 111)
de fecha del formato de un
país al de otro país. Resultado
Region Style
Style
ANSI:
ANSI: 2000.03.22
11
2000.03.22
European:
European: 22
22Mar
11 2000
Mar 200014:20:00:010
14:20:00:010
Japanese:
Japanese: 2000/03/22
2000/03/22

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las funciones se suelen utilizar para convertir datos de fecha del formato de un
Sugerencia país al de otro país.
Vaya al tema acerca de
“CONVERT” de los Libros
en pantalla de SQL Server y Nota Para cambiar los formatos de fecha, debe utilizar la función CONVERT
elija resalte las opciones de con la opción de estilo para determinar el formato de fecha que se devolverá.
estilo.
Ejemplo 1 En este ejemplo se demuestra cómo puede convertir fechas a distintos estilos.
SELECT 'ANSI:' AS Region,
CONVERT (varchar(30), GETDATE(), 102) AS Style
UNION
SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113)
UNION
SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111)

Resultado Region Style


ANSI: 2000.03.22
European: 22 Mar 2000 14:20:00:010
Japanese: 2000/03/22
26 Módulo 2: Introducción a la programación de SQL Server

Ejemplo 2 En este ejemplo se utiliza la opción DATEFORMAT de la instrucción SET para


dar formato a las fechas de la duración de una conexión. Esta configuración
sólo se utiliza en la interpretación de las cadenas de caracteres cuando se
convierten a valores de fecha y no tiene efecto en la presentación de dichos
valores.
SET DATEFORMAT dmy
GO
DECLARE @vdate datetime
SET @vdate = '29/11/00'
SELECT @vdate

Resultado 2000-11-29 00:00:00.000

(1 filas afectadas)
Ejemplo 3 En este ejemplo se devuelve el nombre del usuario actual y la aplicación que
está utilizando en la sesión o conexión actual. El usuario de este ejemplo es
miembro de la función sysadmin.
USE Northwind
SELECT user_name(), app_name()

Resultado dbo Analizador de consultas MS SQL

(1 filas afectadas)

Ejemplo 4 En este ejemplo se determina si la columna FirstName de la tabla Employees


de la base de datos Northwind admite valores NULL.
Un resultado de cero (falso) significa que no se permiten valores NULL,
mientras que un resultado de uno (verdadero) significa que se permiten valores
NULL. Observe que la función OBJECT_ID está incrustada en la función
COLUMNPROPERTY. Esto le permite obtener el object id de la tabla
Employees.
USE Northwind
SELECT COLUMNPROPERTY(OBJECT_ID('Employees'), 'FirstName',
'AllowsNull')

Resultado 0

(1 filas afectadas)
Módulo 2: Introducción a la programación de SQL Server 27

Elementos del lenguaje de control de flujo


Objetivo del tema
Presentar a los alumnos
los elementos del lenguaje
Transact-SQL que controlan  Nivel de instrucción IF
IF USER_NAME()
USER_NAME() <>
<> 'dbo'
'dbo'
el procesamiento de las BEGIN
BEGIN
instrucciones.  Bloques BEGIN … END RAISERROR('Must
RAISERROR('Must bebe sysadmin
sysadmin
to
to Perform
Perform Operation',
Operation',
Explicación previa  Bloques IF … ELSE 10,
10, 1)
1)
Transact-SQL proporciona RETURN
RETURN
END
un lenguaje que controla el  Construcciones WHILE ELSE
END
flujo de la lógica en las ELSE
DBCC
DBCC CHECKDB(Northwind)
CHECKDB(Northwind)
instrucciones.  Nivel de fila
 CASE expresión

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Transact-SQL contiene varios elementos de lenguaje que controlan el flujo de
la lógica de una instrucción. También contiene la expresión CASE, que permite
utilizar la lógica condicional en una única fila cada vez dentro de una
instrucción SELECT o UPDATE.

Nivel de instrucción
Los siguientes elementos del lenguaje permiten controlar el flujo de la lógica en
una secuencia de comandos:

Bloques BEGIN … END Estos elementos encierran varias instrucciones


Transact-SQL para que SQL Server las trate como una unidad.

Bloques IF … ELSE Estos elementos especifican que SQL Server debe ejecutar
la primera alternativa si una condición es verdadera. En caso contrario,
SQL Server debe ejecutar la segunda alternativa.

Construcciones WHILE Estos elementos ejecutan varias veces una instrucción


siempre y cuando la condición que se especifica sea verdadera. Las
instrucciones BREAK y CONTINUE controlan la operación de las
instrucciones incluidas en el bucle WHILE.
28 Módulo 2: Introducción a la programación de SQL Server

Ejemplo 1 En este ejemplo se determina si un cliente tiene algún pedido antes de


eliminarlo de la lista de clientes.
USE Northwind
IF EXISTS (SELECT OrderID FROM Orders
WHERE CustomerID = 'Frank')
PRINT '*** No se puede borrar el cliente ***'
ELSE
BEGIN
DELETE Customers WHERE CustomerID = 'Frank'
PRINT '*** Cliente borrado ***'
END

Nivel de fila
Una expresión CASE enumera predicados, asigna un valor a cada uno y, a
continuación, prueba cada uno de ellos. Si la expresión devuelve un
valor verdadero, la expresión CASE devuelve el valor de la cláusula
WHEN. Si la expresión es falsa y ha especificado una cláusula ELSE,
SQL Server devuelve el valor de la cláusula ELSE. Puede utilizar una
expresión CASE en cualquier lugar en el que pueda utilizar una
expresión.
Sintaxis CASE expresión
{WHEN expresión THEN resultado} [,…n]
[ELSE resultado]
END

Ejemplo El siguiente ejemplo repasa el estado del inventario de los productos de la tabla
Products y devuelve mensajes basados en las cantidades disponibles, las
cantidades de pedidos efectuados y en si se ha interrumpido el suministro del
producto.
SELECT ProductID, 'Product Inventory Status' =
CASE
WHEN (UnitsInStock < UnitsOnOrder AND Discontinued = 0)
THEN 'Negative Inventory - Order Now!'
WHEN ((UnitsInStock-UnitsOnOrder) < ReorderLevel AND
Discontinued = 0)
THEN 'Reorder level reached- Place Order'
WHEN (Discontinued = 1) THEN '***Discontinued***'
ELSE 'In Stock'
END
FROM Northwind..Products
Módulo 2: Introducción a la programación de SQL Server 29

Resultado ProductID Product Inventory Status


1 In Stock
2 Negative Inventory - Order Now!
3 Negative Inventory - Order Now!
4 In Stock
5 ***Discontinued***
6 In Stock
7 In Stock
8 In Stock
9 ***Discontinued***
10 In Stock
11 Negative Inventory - Order Now!
12 In Stock
13 Reorder level reached- Place Order
.
.
.
(77 filas afectadas)
30 Módulo 2: Introducción a la programación de SQL Server

Comentarios
Objetivo del tema
Presentar a los alumnos  Comentarios de línea
el uso común de los
comentarios. SELECT
SELECT ProductName,
ProductName,
(UnitsInStock
(UnitsInStock ++ UnitsOnOrder)
UnitsOnOrder) AS
AS Max
Max --
-- Calculates
Calculates inventory
inventory
Explicación previa ,, SupplierID
SupplierID
Los comentarios son FROM Products
FROM Products
cadenas que no se ejecutan
y que puede colocar en las
instrucciones para realizar
 Comentarios de bloque
anotaciones o deshabilitar /*
/*
una parte de las mismas **
** This
This code
code retrieves
retrieves all
all rows
rows of
of the
the products
products table
table
durante las pruebas. **
** and
and displays
displays the
the unit
unit price,
price, the
the unit
unit price
price increased
increased
**
** by
by 10
10 percent,
percent, and
and the
the name
name of
of the
the product.
product.
*/
*/
SELECT
SELECT UnitPrice,
UnitPrice, (UnitPrice
(UnitPrice ** 1.1),
1.1), ProductName
ProductName
FROM
FROM Products
Products

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Los comentarios son cadenas de texto que no se ejecutan y que puede colocar
en las instrucciones para describir la acción que la instrucción está realizando o
para deshabilitar una o varias líneas de la instrucción. Se pueden utilizar de una
de estas dos formas: en una línea de una instrucción o como un bloque.

Comentarios de línea
Se pueden crear comentarios en una línea mediante dos guiones (--) para
establecer un comentario aparte de una instrucción. Transact-SQL pasa por alto
el texto situado a la derecha de los caracteres de comentario. Este carácter de
comentario se puede utilizar también para deshabilitar líneas de una instrucción.
Ejemplo 1 En este ejemplo se utiliza un comentario de línea para explicar qué está
haciendo el cálculo.
SELECT ProductName
,(UnitsInStock + UnitsOnOrder) AS Max -- Calculates inventory
, SupplierID
FROM Products

Ejemplo 2 En este ejemplo se utiliza un segundo conjunto de comentarios de línea, tal


como representa el segundo conjunto de guiones (--), para impedir la ejecución
de una sección (SupplierID) de una instrucción.
SELECT ProductName
,(UnitsInStock + UnitsOnOrder) AS Max -- Calculates inventory
-- , SupplierID
FROM Products
Módulo 2: Introducción a la programación de SQL Server 31

Comentarios de bloque
Para crear bloques de varias líneas de comentarios, coloque un carácter de
comentario (/*) al comienzo del texto del comentario, escriba sus anotaciones y,
después, concluya el comentario con un carácter de cierre de comentario (*/).

Utilice este indicador de carácter para crear una o varias líneas de comentarios o
encabezados de comentarios (texto descriptivo que documenta las instrucciones
que le siguen). A menudo, los encabezados de comentario incluyen el nombre
del autor, la fecha de creación y de la última modificación de la secuencia de
comandos, información de la versión y una descripción de la acción que realiza
la instrucción.

Nota No puede colocar la instrucción GO dentro de comentarios de bloque.

Ejemplo 3 En este ejemplo se muestra un encabezado de comentario que abarca varias


líneas. Los dos asteriscos (**) que preceden a cada línea mejoran la legibilidad.
/*
** Este código devuelve todas las filas de la tabla products
** y muestra el precio unitario, el precio aumentado
** en un 10 por ciento y el nombre del producto.
*/
SELECT UnitPrice, (UnitPrice * 1.1), ProductName
FROM Products

Nota Los comentarios deben colocarse en toda la secuencia de comandos para


describir las acciones que realizan las instrucciones. Esto es especialmente
importante si otros usuarios también deben revisar o implementar la secuencia
de comandos.

Ejemplo 4 Esta sección de una secuencia de comandos está comentada para evitar que se
ejecute. Esto puede resultar útil cuando se depura o se solucionan problemas de
un archivo de comandos.
/*
DECLARE @v1 int
SET @v1 = 0
WHILE @v1 < 100
BEGIN
SELECT @v1 = (@v1 + 1)
SELECT @v1
END
*/
32 Módulo 2: Introducción a la programación de SQL Server

 Formas de ejecutar instrucciones Transact-SQL


Objetivo del tema
Proporcionar una
introducción a las formas
de ejecutar instrucciones  Instrucciones construidas dinámicamente
Transact-SQL.
 Uso de lotes
Explicación previa
Puede ejecutar instruc-  Uso de secuencias de comandos
ciones Transact-SQL de
varias formas.  Uso de transacciones
 Uso de XML

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Puede ejecutar instrucciones Transact-SQL mediante instrucciones generadas
dinámicamente, lotes, secuencias de comandos y transacciones. También puede
utilizar el Lenguaje de marcado extensible (XML, Extensible Markup
Language) para presentar datos en páginas Web.
Módulo 2: Introducción a la programación de SQL Server 33

Instrucciones construidas dinámicamente


Objetivo del tema
Presentar a los alumnos
 Utilizar EXECUTE con literales de cadena y variables
la ejecución dinámica de
instrucciones.  Utilizar si tiene que asignar valores a variables en
Explicación previa tiempo de ejecución
Se pueden generar
instrucciones dinámica-  Las variables y tablas temporales sólo duran el tiempo
mente, con lo que se de ejecución
crean al mismo tiempo
que SQL Server ejecuta la
secuencia de comandos. DECLARE
DECLARE @dbname
@dbname varchar(30),
varchar(30), @tblname
@tblname varchar(30)
varchar(30)
SET @dbname = 'Northwind'
SET @dbname = 'Northwind'
SET
SET @tblname
@tblname == 'Products'
'Products'

EXECUTE
EXECUTE
('USE
('USE '' ++ @dbname
@dbname ++ '' SELECT
SELECT ** FROM
FROM '+
'+ @tblname)
@tblname)

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Se pueden generar instrucciones dinámicamente, con lo que se crean al mismo
tiempo que SQL Server ejecuta la secuencia de comandos.
Para crear una instrucción dinámicamente, utilice la instrucción EXECUTE
con un conjunto de literales de cadena y variables que se resuelven en tiempo
de ejecución.
Las instrucciones creadas dinámicamente son útiles cuando desea que
SQL Server asigne el valor de la variable al ejecutarse la instrucción.
Por ejemplo, puede crear una instrucción dinámica que ejecute la misma
acción sobre un conjunto de objetos de la base de datos.
Sintaxis EXECUTE ({@varCadena | 'cadenaTsql'} + [{@varCadena |
'cadenaTsql'}...])}
Las opciones se establecen dinámicamente y las variables y las tablas
temporales que se crean dinámicamente duran sólo el tiempo que SQL Server
tarda en ejecutar la instrucción.
Tenga en cuenta los siguientes hechos acerca de la instrucción EXECUTE:
 La instrucción EXECUTE ejecuta instrucciones compuestas de cadenas de
caracteres en un lote de Transact-SQL. Como se trata de literales de cadena,
asegúrese de agregar espacios en los lugares adecuados para garantizar una
concatenación adecuada.
 La instrucción EXECUTE puede incluir un literal de cadena, una variable
local de cadena o una concatenación de ambas.
 Todos los elementos de la cadena EXECUTE deben constar de datos de
caracteres; debe convertir todos los datos numéricos antes de utilizar la
instrucción EXECUTE.
34 Módulo 2: Introducción a la programación de SQL Server

 No se pueden utilizar funciones para crear la cadena que se va a ejecutar.


 Puede crear dinámicamente cualquier instrucción Transact-SQL válida,
incluidas las funciones.
 Las instrucciones EXECUTE se pueden anidar.

Ejemplo 1 Este ejemplo muestra cómo se pueden utilizar las instrucciones ejecutadas
dinámicamente para especificar un contexto de base de datos distinto de aquél
en el que se encuentra en la actualidad y, después, emplearlo para seleccionar
todas las columnas y filas de una tabla especificada. En este ejemplo, el cambio
del contexto de la base de datos a Northwind sólo se prolonga durante el
tiempo que dure la consulta. El contexto de la base de datos actual no se
cambia.
Mediante un procedimiento almacenado, el usuario podría pasar la información
de la base de datos y de la tabla a la instrucción como parámetros y, después,
consultar una tabla específica de una base de datos.
DECLARE @dbname varchar(30), @tablename varchar(30)
SET @dbname = 'Northwind'
SET @tablename = 'Products'

EXECUTE
('USE ' + @dbname +
' SELECT ProductName FROM ' + @tablename)

Resultado ProductName
Chai
Chang
Aniseed Syrup
...

Ejemplo 2 Este ejemplo muestra cómo se puede utilizar una instrucción ejecutada
dinámicamente para cambiar una opción de base de datos durante la ejecución
de la instrucción. La instrucción siguiente no devuelve un recuento del número
de filas afectadas.
EXECUTE ('SET NOCOUNT ON '+ 'SELECT LastName, ReportsTo
FROM Employees WHERE ReportsTo IS NULL')

Resultado Lastname ReportsTo


Fuller NULL
Módulo 2: Introducción a la programación de SQL Server 35

Uso de lotes
Objetivo del tema
Explicar a los alumnos el  Una o varias instrucciones Transact-SQL emitidas
uso de los lotes. juntas
Explicación previa
Un lote es un conjunto de
 Definición de un lote con la instrucción GO
instrucciones Transact-SQL  Cómo procesa SQL Server los lotes
que se emiten juntas y se
ejecutan como un grupo.  Instrucciones que no se pueden combinar en un lote
 CREATE PROCEDURE
 CREATE VIEW
 CREATE TRIGGER
 CREATE RULE
 CREATE DEFAULT

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
En un lote se puede emitir una o varias instrucciones.

Una o varias instrucciones Transact-SQL emitidas juntas


Los lotes se pueden ejecutar interactivamente o como parte de una secuencia
de comandos. Una secuencia de comandos puede incluir más de un lote de
instrucciones Transact-SQL.

Definición de un lote con la instrucción GO


Utilice una instrucción GO para señalizar el final de un lote. GO no es una
instrucción Transact-SQL aceptada universalmente; sólo la admiten el
Analizador de consultas SQL y la utilidad osql. Las aplicaciones basadas en
las interfaces de programación de aplicaciones (API) ODBC u OLE DB
generan un error de sintaxis cuando tratan de ejecutar una instrucción GO.

Cómo procesa SQL Server los lotes


SQL Server optimiza, compila y ejecuta juntas las instrucciones de un lote.
Sin embargo, las instrucciones no tienen que ejecutarse necesariamente como
una unidad de trabajo recuperable.
El ámbito de las variables definidas por el usuario se limita a un lote, con lo que
no se puede hacer referencia a una variable después de una instrucción GO.

Nota Si existe un error de sintaxis en un lote, no se ejecutará ninguna de las


instrucciones de ese lote. La ejecución se inicia con el siguiente lote.
36 Módulo 2: Introducción a la programación de SQL Server

Instrucciones que no se pueden combinar en un lote


SQL Server debe ejecutar determinadas instrucciones de creación de objetos
en sus propios lotes, dentro de una secuencia de comandos, dada la forma en
que aquéllos se definen. Cada una de las siguientes instrucciones se define
incluyendo un encabezado de definición de objeto seguido de la palabra clave
AS (que indica que a continuación hay una o más instrucciones). Las
definiciones del objeto se delimitan mediante la instrucción GO; SQL Server
reconoce el final de la definición del objeto cuando alcanza la instrucción GO:
 CREATE PROCEDURE
 CREATE VIEW
 CREATE TRIGGER
 CREATE RULE
 CREATE DEFAULT

Ejemplo 1 Si desea utilizar más de una instrucción que no se puede combinar, debe enviar
varios lotes, tal como indica la siguiente secuencia de comandos.
CREATE DATABASE ...
CREATE TABLE ...
GO

CREATE VIEW1 ...


GO
CREATE VIEW2 ...
GO

Ejemplo 2 El siguiente ejemplo es un lote que no funciona. Para ejecutarlo correctamente,


inserte una instrucción GO delante de cada instrucción CREATE TRIGGER.
CREATE DATABASE ...
CREATE TABLE ...
CREATE TRIGGER ...
CREATE TRIGGER ...
GO

Ejemplo 3 El siguiente ejemplo muestra cómo agrupar las mismas instrucciones del
ejemplo 2 para que se ejecuten correctamente.
CREATE DATABASE ...
CREATE TABLE ...
GO

CREATE TRIGGER ...


GO

CREATE TRIGGER ...


GO
Módulo 2: Introducción a la programación de SQL Server 37

Uso de secuencias de comandos


Objetivo del tema
Presentar cómo se utilizan
las secuencias de
comandos para ejecutar  Contener instrucciones guardadas
instrucciones Transact-SQL.
 Pueden escribirse en cualquier editor de texto
Explicación previa
Las secuencias de  Guardar con la extensión de nombre de archivo .sql
comandos son una de las
formas más comunes de  Ejecutar en el Analizador de consultas SQL o con la
ejecutar instrucciones herramienta osql
Transact-SQL.
 Utilizar para volver a crear objetos de base de datos o
para ejecutar instrucciones varias veces

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las secuencias de comandos son una de las formas más comunes de ejecutar
instrucciones Transact-SQL. Una secuencia de comandos consta de una o más
instrucciones Transact-SQL que se guardan como un archivo.
Las secuencias de comandos se pueden escribir y guardar en el Analizador de
consultas SQL o en cualquier procesador de texto, como Bloc de notas. El
archivo de comandos se guarda con la extensión de nombre de archivo .sql.
Puede abrir y ejecutar el archivo de comandos en el Analizador de consultas
SQL o con la herramienta osql (u otra herramienta de consulta).
Las secuencias de comandos guardadas son muy útiles al volver a crear bases
de datos u objetos de datos, o cuando se debe utilizar un conjunto de
instrucciones de forma repetida.
Dé a las instrucciones Transact-SQL un formato que otras personas puedan leer.
Utilice sangrías para indicar los niveles de relaciones.
38 Módulo 2: Introducción a la programación de SQL Server

Uso de transacciones
Objetivo del tema
Presentar a los alumnos
las transacciones.  Se procesan como lotes
Explicación previa  Se garantiza la integridad de los datos
Las transacciones se
procesan como lotes  Los cambios en la base de datos se aplican o deshacen
pero con unas cuantas conjuntamente
diferencias importantes…
BEGIN
BEGIN TRANSACTION
TRANSACTION
UPDATE
UPDATE savings
savings SET
SET amount
amount == (amount
(amount -- 100)
100)
WHERE
WHERE custid
custid == 78910
78910
…… <Rollback
<Rollback transaction
transaction if
if error>
error>
UPDATE
UPDATE checking
checking SET
SET amount
amount == (amount
(amount ++ 100)
100)
WHERE
WHERE custid
custid == 78910
78910
…… <Rollback
<Rollback transaction
transaction if
if error>
error>
COMMIT TRANSACTION
COMMIT TRANSACTION

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las transacciones, al igual que los lotes, son grupos de instrucciones que se
Sugerencia envían como un conjunto. Sin embargo, SQL Server trata las transacciones
Las tablas Savings y
Checking utilizadas en
como una única unidad de trabajo, y la transacción funciona o produce un error
los ejemplos de este tema como una sola unidad. Este proceso mantiene la integridad de los datos. Las
son ficticias. transacciones pueden abarcar varios lotes.
Las transacciones se preceden de una instrucción BEGIN TRANSACTION y
se terminan con una instrucción COMMIT TRANSACTION o ROLLBACK
TRANSACTION.
Cuando se confirma una transacción, SQL Server convierte los cambios a esa
transacción en definitivos. Cuando se deshace una transacción, SQL Server
devuelve todas las filas afectadas por la transacción al estado en que se
encontraban antes de la transacción.
Sintaxis parcial BEGIN TRANSACTION
COMMIT / ROLLBACK TRANSACTION
Módulo 2: Introducción a la programación de SQL Server 39

Ejemplo En el siguiente ejemplo, se adeudan 100$ de la cuenta de ahorro del cliente


número 78910 y se abonan 100$ a la cuenta de crédito del cliente. El cliente ha
transferido 100$ de la cuenta de ahorros a la de crédito.
BEGIN TRANSACTION
UPDATE savings
SET balance = (amount – 100)
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR ('Transaction not completed due to
savings account problem.', 16, -1)
ROLLBACK TRANSACTION
END
UPDATE checking
SET balance = (amount +100)
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR ('Transaction not completed due to
checking account problem.', 16, -1)
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
40 Módulo 2: Introducción a la programación de SQL Server

Uso de XML
Objetivos de la
diapositiva
Presentar XML y cómo
una consulta puede  Permitir que el explorador cliente dé formato a los datos
devolver datos con formato
XML bien constituido.  Especificación de la opción FOR XML AUTO
Explicación previa  Especificación de la opción FOR XML RAW
XML es un lenguaje de
programación que los  Identificación de las limitaciones en el uso de la
programadores de Web cláusula FOR XML
pueden utilizar para
presentar datos de
una base de datos de
SQL Server en páginas
Web.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
XML es un lenguaje de programación que los programadores de Web pueden
utilizar para presentar datos de una base de datos de SQL Server en páginas
Web.

Permitir que el explorador cliente dé formato a los datos


Al utilizar la cláusula FOR XML en la instrucción SELECT, SQL Server hace
lo siguiente:
 Devuelve los resultados de una consulta en forma de una cadena de
caracteres.
 Devuelve los atributos de los datos, por ejemplo nombres de columnas y
tablas, como etiquetas. Un explorador cliente puede utilizar luego esas
etiquetas para dar formato a los datos devueltos.

Especificación de la opción FOR XML AUTO


Puede especificar la opción FOR XML AUTO para que los resultados de la
consulta se devuelvan en un formato estándar.
Cada tabla de la cláusula FROM para la que se muestra al menos una columna
en la cláusula SELECT se representa como un elemento XML. Un elemento
incluye los datos y atributos que describen los datos.
Módulo 2: Introducción a la programación de SQL Server 41

Ejemplo 1 En este ejemplo se seleccionan tres columnas de dos tablas combinadas.


Observe que los resultados combinan todas las columnas en una sola cadena de
texto.
SELECT Orders.OrderID, Shippers.CompanyName, Orders.CustomerID
FROM Orders JOIN Shippers
ON Orders.shipvia = Shippers.ShipperID
WHERE OrderID < 10250
FOR XML AUTO

Resultado XML_F52E2B61-18A1-11d1-B105-00805F49916B
--------------------------------------------
<Orders OrderID="10248" CustomerID="VINET">
<Shippers CompanyName="Federal Shipping"/>
</Orders>
<Orders OrderID="10249" CustomerID="TOMSP">
<Shippers CompanyName="Speedy Express"/>
</Orders>

Nota SQL Server vuelve a ordenar el conjunto de resultados para agrupar las
columnas por nombre de tabla.

Especificación de la opción FOR XML RAW


En algunos casos, los programadores de Web no desean que el formato sea
automático. Se puede especificar la opción RAW para transformar cada fila
del conjunto de resultados en un elemento XML con una fila de identificador
genérico como etiqueta del elemento.
Ejemplo 2 Compare el resultado de este ejemplo con el del ejemplo 1. Este ejemplo
devuelve los mismos datos, pero el formato es más genérico. Observe que las
tablas no tienen nombre y las columnas no están agrupadas por nombre de
tabla.
SELECT Orders.OrderID, Shippers.CompanyName, Orders.CustomerID
FROM Orders JOIN Shippers
ON Orders.shipvia = Shippers.ShipperID
WHERE OrderID < 10250
FOR XML RAW

Resultado XML_F52E2B61-18A1-11d1-B105-00805F49916B
----------------------------------------
<row OrderID="10248"
CompanyName="Federal Shipping"
CustomerID="VINET"/>
<row OrderID="10249"
CompanyName="Speedy Express"
CustomerID="TOMSP"/>
42 Módulo 2: Introducción a la programación de SQL Server

Identificación de las limitaciones en el uso de la cláusula


FOR XML
Una instrucción SELECT que contenga la cláusula FOR XML cambia el
formato de la salida en el cliente de SQL Server. Debido a estos cambios, no
puede utilizar una salida de consulta en formato XML como entrada para el
procesamiento adicional de SQL Server.
No puede utilizar salidas con formato XML en los siguientes casos:
 En una instrucción SELECT anidada.
 En una instrucción SELECT INTO.
 En una cláusula COMPUTE BY.
 En los procedimientos almacenados que se invocan en una instrucción
INSERT.
 En una definición de vista o una función definida por el usuario que
devuelve un conjunto de filas.
Módulo 2: Introducción a la programación de SQL Server 43

Procedimientos recomendados
Objetivo del tema
Presentar las recomenda- Mantenga
Mantenga la
la lógica
lógica empresarial
empresarial en
en el
el servidor
servidor como
como
ciones para programar procedimientos
procedimientos almacenados
almacenados
con Transact-SQL.
Explicación previa Utilice
Las siguientes son Utilice la
la sintaxis
sintaxis ANSI
ANSI SQL
SQL
recomendaciones
para programar con
Transact-SQL. Elija
Elija la
la convención
convención de
de denominación
denominación apropiada
apropiada

Guarde
Guarde las
las instrucciones
instrucciones como
como secuencias
secuencias de
de comandos
comandos yy
coméntelas
coméntelas detalladamente
detalladamente


Dé aa las
las instrucciones
instrucciones Transact-SQL
Transact-SQL un
un formato
formato que
que otras
otras
personas
personas puedan
puedan leer
leer

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las siguientes recomendaciones le ayudarán a crear secuencias de comandos
más claras en Transact-SQL:
 Mantenga la lógica empresarial en el servidor como procedimientos
almacenados.
 Cuando sea posible, utilice la sintaxis ANSI SQL para asegurar que las
secuencias de comandos sean lo más compatibles y portables posible.
 Elija la convención de denominación apropiada y asigne nombres a los
elementos de forma coherente.
 Guarde las instrucciones como secuencias de comandos y coméntelas
detalladamente.
 Dé a las instrucciones Transact-SQL un formato que otras personas puedan
leer. Utilice sangrías para indicar los niveles de relaciones.

En los Libros en pantalla de SQL Server encontrará información adicional


acerca de estos temas.
Tema Buscar en

Variables de Transact-SQL variables


Funciones funciones
Sugerencias de Transact-SQL transact-sql
Convenciones de Transact-SQL transact-sql
Recomendaciones de sintaxis SQL “sintaxis de sql”
Preparar instrucciones “preparar instrucciones”
Herramienta osql osql
Palabras clave reservadas Palabras clave
Almacenamiento en caché de lotes ad hoc “OLE DB”, ODBC
Uso de XML “SELECT (T-SQL)”
44 Módulo 2: Introducción a la programación de SQL Server

Práctica A: Introducción a Transact-SQL


Objetivo del tema
Presentar la práctica.
Explicación previa
En la práctica, escribirá
instrucciones SELECT
básicas, modificará un
archivo de comandos y
utilizará funciones del
sistema.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Explique los objetivos de la
práctica. Objetivos
Después de realizar esta práctica, el alumno será capaz de:
 Escribir instrucciones SELECT básicas que devuelvan conjuntos de
resultados ordenados y limitados.
 Modificar y ejecutar una secuencia de comandos.
 Ejecutar una secuencia de comandos con la herramienta osql.
 Utilizar las funciones del sistema para recuperar información del sistema.

Requisitos previos
Antes de trabajar en esta práctica, debe tener:
 Los archivos de comandos de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L02.
 Los archivos de respuestas de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L02\Answers.

Más información
Si necesita ayuda sobre la ejecución de archivos, busque el título “Ejecutar
instrucciones SQL” en la Ayuda del Analizador de consultas SQL.
Otros recursos que puede utilizar son:
 El esquema de base de datos Northwind.
 Los Libros en pantalla de Microsoft SQL Server.
Módulo 2: Introducción a la programación de SQL Server 45

Situación de ejemplo
La organización del aula pretende simular la de una empresa dedicada al
comercio mundial llamada Northwind Traders. Su nombre de dominio ficticio
es nwtraders.msft. El servidor DNS principal para nwtraders.msft es el equipo
del instructor, cuya dirección de Protocolo Internet (IP) es 192.168.x.200
(donde x es el número del aula que tiene asignado). El nombre del equipo del
instructor es London.
En la tabla siguiente se muestran el nombre de usuario, el nombre de equipo y
la dirección IP del equipo de cada alumno en el dominio ficticio nwtraders.msft.
Busque el nombre de usuario correspondiente a su equipo y anótelo.
Nombre de Nombre del
usuario equipo Dirección IP

SQLAdmin1 Vancouver 192.168.x.1


SQLAdmin2 Denver 192.168.x.2
SQLAdmin3 Perth 192.168.x.3
SQLAdmin4 Brisbane 192.168.x.4
SQLAdmin5 Lisbon 192.168.x.5
SQLAdmin6 Bonn 192.168.x.6
SQLAdmin7 Lima 192.168.x.7
SQLAdmin8 Santiago 192.168.x.8
SQLAdmin9 Bangalore 192.168.x.9
SQLAdmin10 Singapore 192.168.x.10
SQLAdmin11 Casablanca 192.168.x.11
SQLAdmin12 Tunis 192.168.x.12
SQLAdmin13 Acapulco 192.168.x.13
SQLAdmin14 Miami 192.168.x.14
SQLAdmin15 Auckland 192.168.x.15
SQLAdmin16 Suva 192.168.x.16
SQLAdmin17 Stockholm 192.168.x.17
SQLAdmin18 Moscow 192.168.x.18
SQLAdmin19 Caracas 192.168.x.19
SQLAdmin20 Montevideo 192.168.x.20
SQLAdmin21 Manila 192.168.x.21
SQLAdmin22 Tokyo 192.168.x.22
SQLAdmin23 Khartoum 192.168.x.23
SQLAdmin24 Nairobi 192.168.x.24

Tiempo previsto para completar esta práctica: 30 minutos


46 Módulo 2: Introducción a la programación de SQL Server

Ejercicio 1
Escribir instrucciones SELECT básicas
En este ejercicio, escribirá varias instrucciones que devuelven filas de la tabla
Products de la base de datos Northwind.

 Para escribir una instrucción SELECT que devuelve datos ordenados


En este procedimiento, va a escribir una instrucción que devuelve todas las filas
y columnas de la tabla Products y ordena los resultados en orden ascendente
por la columna ProductName. El archivo
C:\Moc\2329A\Labfiles\L02\Answers\Basica.sql es la secuencia de comandos
completa para este procedimiento.
1. Inicie la sesión en el dominio del aula NWTraders con la información de la
tabla siguiente.
Opción Valor

Nombre de SQLAdminx (donde x corresponde a su nombre de equipo, según


usuario se ha designado en el dominio del aula nwtraders.msft)
Contraseña password

2. Abra el Analizador de consultas SQL y, si así se le pide, inicie una sesión en


el servidor local con autenticación de Windows.
Tiene permiso para iniciar sesión y administrar SQL Server, ya que ha
iniciado la sesión como SQLAdminx, que es miembro del grupo local
Administradores de Microsoft Windows 2000. Todos los miembros de este
grupo se asignan automáticamente a la función sysadmin de SQL Server.
3. En la lista BD, haga clic en Northwind.
4. Escriba una instrucción SELECT que devuelva todas las filas y columnas de
la tabla Products y ordene los resultados en orden ascendente por la
columna ProductName.
Puede ejecutar el procedimiento almacenado del sistema sp_help en la tabla
Products para buscar el nombre correcto de las columnas.
SELECT * FROM Products ORDER BY ProductName
Módulo 2: Introducción a la programación de SQL Server 47

 Para escribir una instrucción SELECT que devuelva datos limitados


En este procedimiento, escribirá una instrucción que recupera los productos de
una categoría especificada.
• Escriba una instrucción SELECT que recupere todos los productos de la
categoría (CategoryID) 4 de la tabla Products.
Puede ejecutar el procedimiento almacenado del sistema sp_help en la tabla
Products para buscar el nombre correcto de las columnas.
SELECT * FROM Products WHERE CategoryID = 4

Sugerencia Para obtener más información acerca de la instrucción SELECT,


así como de cualquier instrucción Transact-SQL y tabla del sistema, seleccione
la palabra clave SELECT en la ventana de consulta y presione Mayús+F1 para
abrir los Libros en pantalla de SQL Server. Haga doble clic en SELECT:
cláusulas.
48 Módulo 2: Introducción a la programación de SQL Server

Ejercicio 2
Modificar un archivo de comandos
En este ejercicio, va a modificar, guardar y ejecutar un archivo de comandos
sencillo.

 Para modificar un archivo de comandos


En este procedimiento, ejecutará una secuencia de comandos que contiene
errores. Mediante la información de error que devuelve SQL Server, hará
cambios a la secuencia de comandos de forma que se ejecute correctamente.
A continuación, guardará y ejecutará la secuencia de comandos.
1. Abra C:\Moc\2329A\Labfiles\L02\Sample_Script.sql, examínelo y, a
continuación, ejecútelo.
Al ejecutar este archivo, obtendrá errores. Estos errores son intencionados.
El archivo C:\Moc\2329A\Labfiles\L02\Answers\Sample_Script.sql es la
secuencia de comandos completa para este procedimiento.
2. Coloque comentarios alrededor del nombre y la descripción de la secuencia
de comandos para que no se ejecuten.
/*
** Sample_Script.sql
**
** Esta secuencia de comandos crea la tabla Sample1 y la
** vista Sample_View. Una vez creados los objetos se
** insertan cinco filas en la tabla Sample1 y se
** consultan.
** Esta secuencia de comandos se debe ejecutar en la base
** de datos Northwind.
**
*/

3. Agregue una instrucción que especifique que la secuencia de comandos se


ejecutará en el contexto de la base de datos Northwind.
USE Northwind

4. Incluya el final de los marcadores de lotes (instrucciones GO) en los lugares


adecuados de la secuencia de comandos. Sólo se necesitan dos marcadores
de lotes adicionales.
GO
CREATE VIEW Sample_View
AS
SELECT cust_no, lname FROM Sample1
GO

5. Guarde la secuencia de comandos y, a continuación, ejecútela.


Módulo 2: Introducción a la programación de SQL Server 49

 Para ejecutar un archivo de comandos con osql


En este procedimiento, va a ejecutar un archivo de comandos mediante la
herramienta osql.
1. Abra una ventana de símbolo del sistema.
2. Escriba el siguiente comando para ejecutar
C:\Moc\2329A\Labfiles\L02\Sample_Script2.sql. Asegúrese de que la ruta
de acceso es correcta.
osql /Usa /E /i
"c:\moc\2329A\labfiles\L02\Sample_Script2.sql"

Nota Escriba este comando en una sola línea.


50 Módulo 2: Introducción a la programación de SQL Server

Ejercicio 3
Uso de las funciones del sistema
En este ejercicio, va a recopilar información del sistema mediante las funciones
del sistema.

 Para determinar el Id. de proceso del servidor


En este procedimiento, va a observar la actividad actual del servidor y a
determinar la actividad que la sesión está generando.
1. Ejecute el procedimiento almacenado del sistema sp_who.
SQL Server muestra toda la actividad que se está produciendo en
el servidor.
2. Para determinar qué actividad es la suya, ejecute la siguiente instrucción:
SELECT @@spid

SQL Server devuelve el número de Id. de proceso del servidor (SPID,


Server Process ID) de su proceso en los resultados.
3. Ejecute otra vez el procedimiento almacenado del sistema sp_who con el
número de SPID como parámetro adicional. (En la siguiente instrucción, n
representa el número de SPID.)
EXEC sp_who n

SQL Server muestra la actividad relacionada con su SPID.

 Para recuperar información del entorno


En este procedimiento, va a determinar qué versión de SQL Server está
ejecutando y va a recuperar información acerca de la conexión, el contexto de la
base de datos y el servidor. Realizará estas tareas con las funciones del sistema.
1. Ejecute la instrucción siguiente:
SELECT @@version

2. Ejecute la instrucción siguiente:


SELECT USER_NAME(), DB_NAME(), @@servername
Módulo 2: Introducción a la programación de SQL Server 51

 Para recuperar metadatos


En este procedimiento, va a ejecutar varias consultas para devolver los
metadatos de los objetos específicos de la base de datos mediante vistas de
esquema de información. Recuerde que INFORMATION_SCHEMA es un
usuario predefinido de la base de datos que es propietario de las vistas de
esquema de información.
1. Ejecute la instrucción siguiente para devolver una lista de todas las tablas
definidas por el usuario de una base de datos:
USE Northwind
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

2. Ejecute la instrucción siguiente para devolver las columnas de la clave


principal y de la clave externa de la tabla Orders:
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Orders'

¿Qué columna tiene definida una clave principal?


OrderID.
____________________________________________________________

____________________________________________________________
52 Módulo 2: Introducción a la programación de SQL Server

Repaso
Objetivo del tema
Reforzar los objetivos del
módulo mediante el repaso
de los puntos clave.  Diseño de la arquitectura de aplicaciones corporativas
Explicación previa  Herramientas de programación de SQL Server
Las preguntas de repaso
abarcan algunos de los  El lenguaje de programación Transact-SQL
conceptos clave impartidos
en el módulo.  Elementos de Transact-SQL
 Elementos adicionales del lenguaje
 Formas de ejecutar instrucciones Transact-SQL

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
1. Está diseñando una aplicación de múltiples capas con una interfaz Web.
Esta aplicación debe actualizar con frecuencia una tabla de la base de datos.
¿Cómo y dónde implementaría la lógica para realizar la actualización?
Probablemente obtendrá el mayor rendimiento si crea un
procedimiento almacenado en SQL Server para realizar la
actualización. Este procedimiento almacenado se invoca desde un
componente de la capa intermedia.

2. Explique las diferencias entre un lote y una secuencia de comandos.


Un lote es un conjunto de instrucciones Transact-SQL que se envían
juntas, en las que se comprueba la sintaxis de forma conjunta y que se
ejecutan como un grupo. Una secuencia de comandos es un grupo de
instrucciones Transact-SQL guardado como un archivo.
Módulo 2: Introducción a la programación de SQL Server 53

3. ¿Qué ventaja tiene una transacción frente a un lote o una secuencia de


comandos?
Una transacción se ejecuta como una unidad de trabajo única. Si una
transacción produce un error, puede deshacerse como una unidad,
dejando los datos en un estado coherente.

4. Si desea incluir lógica condicional en una secuencia de comandos, ¿qué


tipo de elementos del lenguaje emplearía? Nombre todos los ejemplos de
palabras clave de elementos del lenguaje que conozca.
Palabras clave de control de flujo. Los ejemplos incluyen
BEGIN...END, IF...ELSE, RETURN, WHILE, BREAK y CONTINUE.
THIS PAGE INTENTIONALLY LEFT BLANK

También podría gustarte