Tema 8 TransactSQL

Páginas: 27 (6709 palabras) Publicado: 14 de mayo de 2015
Programación con Transact SQL

121

8. PROGRAMACIÓN CON TRANSACT-SQL
8.1. Introducción.
La mayoría de los motores de bases de datos actuales amplían el estándar SQL con una serie
de extensiones, que resultan de gran utilidad para la programación. Antes de que estas
extensiones estuvieran disponibles, las solicitudes a la base de datos siempre eran instrucciones
sencillas y cualquier lógicacondicional tenía que realizarla la aplicación llamante.
Transact SQL es el lenguaje que proporciona SQL Server para ampliar SQL con los
elementos característicos de los lenguajes de programación: variables, sentencias de control de
flujo, bucles, etc.
Transact SQL nos permitirá programar los siguientes módulos de programación en una base
de datos SQL Server:





Scripts
Procedimientos almacenadosFunciones
Triggers

8.2. Declaración y asignación de variables.
En Transact-SQL podemos declarar variables. Se trata de variables locales, con un ámbito y
visibilidad sólo dentro del proceso por lotes o procedimiento almacenado en que se han declarado
(conceptos que veremos posteriormente). Las variables deben comenzar por el carácter @.
Transact-SQL no es CASE-SENSITIVE, es decir, no diferenciamayúsculas de minúsculas
como otros lenguajes de programación como C o Java.
Transact-SQL no tiene variables globales. La documentación antigua hace referencia a ciertas
funciones del sistema sin parámetros, como variables globales, quizá porque se designan
mediante @@, de forma similar a la designación para las variables locales.
Las variables se declaran al principio de un proceso por lotes oprocedimiento almacenado,
mediante la palabra reservada DECLARE, seguida del nombre de la variable y el tipo, que
coinciden con los vistos en el tema de SQL.
Por ejemplo:

I.E.S. Bezmiliana

DECLARE @sueldo smallmoney, @nombre varchar(30)

122

Programación con Transact SQL

Es posible asignar valores a variables con la instrucción SELECT o la instrucción SET,
utilizando el operador de asignación(=). Los valores asignados mediante SET pueden ser
constantes, otras variables o expresiones. En el siguiente ejemplo declaramos una variable, le
asignamos un valor mediante la instrucción SET, y después utilizamos esa variable en una
cláusula WHERE:
DECLARE @limite money
SET @limite = 10
SELECT * FROM articulos WHERE precio <= @limite

Podíamos haber escrito el mismo código utilizando lainstrucción SELECT en lugar de la
instrucción SET. Sin embargo, habitualmente se utiliza SELECT cuando los valores que se van a
asignar se encuentran en una columna de una tabla. Una instrucción SELECT utilizada para
asignar valores a una o varias variables se denomina SELECT de asignación.
No es posible combinar la funcionalidad del SELECT de asignación y de un SELECT
«normal» en la misma instrucción. Esdecir, si se utiliza una instrucción SELECT para asignar
valores a variables, no puede devolver también valores al cliente como un conjunto de resultados.
En el siguiente ejemplo declaramos dos variables, les asignamos valores desde la tabla precios, y
después seleccionamos sus valores como conjunto de resultados.
DECLARE @precio_min smallmoney, @precio_max smallmoney
SELECT @precio_min =MIN(precio), -- Variables asignadas
@precio_max = MAX(precio) -- SELECT de asignación
FROM precios
SELECT @precio_min, @precio_max --Variables devueltas SELECT «normal»

Una única instrucción SELECT puede asignar varias variables, sin embargo, hay que utilizar
una instrucción SET independiente para asignar cada variable. Por ejemplo, la siguiente
instrucción SET devuelve un error:
SET @precio_min=0,@precio_max=100

-- ¡¡incorrecto!!

Si se utiliza la expresión SELECT de asignación habrá que tener en cuenta que el valor
asignado a la variable sea único. De lo contrario, se asignará el último valor devuelto del
conjunto de valores.
Ejemplo: Supongamos que existen los siguientes valores de concepto en la tabla artículos:
CodArt
0001
0002
0003

I.E.S. Bezmiliana

Concepto
Ratón óptico Genius
Teclado...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Tema 8
  • TEMA 8
  • Tema 8
  • Tema 8
  • Tema 8
  • Tema 8
  • Tema 8
  • Tema 8

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS