manejo de sentencia sql server 2005x

7
1 Richard Najarro Tala 1 Manejo de Sentencia SQL Serv Manejo de IF ... ELSE Impone condiciones en la ejecuc La instrucción de Transact-SQL a y su condición se ejecuta si la co Sintaxis para IF ... ELSE IF ( Boolean_expression ) SI (Ex BEGIN --EMPEZAR Sentencia de instrucciones SQ END --FIN ELSE BEGIN --EMPEZAR Sentencia de instrucciones SQ END –FIN Ejemplo 01 DECLARE @NUM char(3) SET @NUM = 'a' IF (IsNumeric(@NUM)=1) --Devu --expresión es un --valor de 0 (falso) BEGIN SELECT 'Ingreso Numero' END ELSE BEGIN SELECT 'Ingreso Letra' END averano ver e Sentencia SQL Serv ción de una instrucción Transact-SQL. a raíz de una palabra clave de la SI ondición se cumple (cuando la expresión devuelve tr xpresion_Booleana) QL QL uelve un valor de 1 (verdadero) si la valor numérico, devuelve un )de otra manera. ver rue).

Upload: richard-najarro-talaverano

Post on 27-Apr-2015

1.969 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Manejo de Sentencia SQL Server 2005x

1 Richard Najarro Talaverano

1 Manejo de Sentencia SQL Server

Manejo de Sentencia SQLIF ... ELSE Impone condiciones en la ejecución de una instrucción TransactLa instrucción de Transact-SQL a raíz de una palabra clave de la SIy su condición se ejecuta si la condición se cumple Sintaxis para IF ... ELSE IF ( Boolean_expression ) SI (Expresion_Booleana BEGIN --EMPEZAR Sentencia de instrucciones SQL END --FIN ELSE BEGIN --EMPEZAR Sentencia de instrucciones SQL END –FIN

Ejemplo 01

DECLARE @NUM char(3) SET @NUM = 'a' IF (IsNumeric(@NUM)=1) --Devuelve un valor de 1 (verdadero) si la --expresión es un valor numérico, devuelve un --valor de 0 (falso)de otra manera. BEGIN SELECT 'Ingreso Numero' END ELSE BEGIN SELECT 'Ingreso Letra' END

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

Manejo de Sentencia SQL Server

Impone condiciones en la ejecución de una instrucción Transact-SQL. SQL a raíz de una palabra clave de la SI

y su condición se ejecuta si la condición se cumple (cuando la expresión devuelve true

Expresion_Booleana)

Sentencia de instrucciones SQL

Sentencia de instrucciones SQL

Devuelve un valor de 1 (verdadero) si la expresión es un valor numérico, devuelve un valor de 0 (falso)de otra manera.

Server

cuando la expresión devuelve true).

Page 2: Manejo de Sentencia SQL Server 2005x

2 Richard Najarro Talaverano

2 Manejo de Sentencia SQL Server

Ejemplo 02

DECLARE @NOTA INT SET @NOTA=18 --Ingresando una Nota IF(@NOTA<= 10) BEGIN PRINT 'MALO' END ELSE IF(@NOTA<=14) BEGIN PRINT 'REGULAR' END ELSE IF(@NOTA<=17) BEGIN PRINT 'BUENO' END ELSE IF(@NOTA<=20) BEGIN PRINT 'EXCELENTE' END ELSE BEGIN PRINT 'INGRESO NOTA CORRECTA' END

CASE (Transact-SQL) La expresión CASE tiene dos formatos * La expresión CASE sencilla compara una expresión con un conjunto de expresionessencillas para determinar el resultado* La expresión CASE buscada evalúa un conjunto de expresiones booleanas para determinar el resultado. Ambos formatos son compatibles con un argumento CASE se puede utilizar en cualquier instrucción o cláusula que permita una expresión válidaPor ejemplo, puede utilizar CASEcláusulas como select_list, IN, WHERE Sintaxis para CASE... CASE <expresion> WHEN <valor_expresion> THEN WHEN <valor_expresion> THEN ELSE <valor_devuelto> -- Valor por END

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

Ingresando una Nota

'INGRESO NOTA CORRECTA'

tiene dos formatos:

sencilla compara una expresión con un conjunto de expresionessencillas para determinar el resultado.

buscada evalúa un conjunto de expresiones booleanas para determinar

Ambos formatos son compatibles con un argumento ELSE opcional.

se puede utilizar en cualquier instrucción o cláusula que permita una expresión válidaCASE en instrucciones como SELECT, UPDATE, DELETE

WHERE, ORDER BY y HAVING.

THEN <valor_devuelto> THEN <valor_devuelto> Valor por defecto

sencilla compara una expresión con un conjunto de expresiones

buscada evalúa un conjunto de expresiones booleanas para determinar

se puede utilizar en cualquier instrucción o cláusula que permita una expresión válida. DELETE y SET, y en

Page 3: Manejo de Sentencia SQL Server 2005x

3 Richard Najarro Talaverano

3 Manejo de Sentencia SQL Server

Ejemplo 01

DECLARE @OPERADOR CHARDECLARE @NUM1 INT,@NUM2 SET @OPERADOR ='*' --Ingresando el operadorSET @NUM1=15 --Ingresando el primer numeroSET @NUM2= 8 --Ingresando el segundo numero SELECT CASE WHEN @OPERADOR ='+' WHEN @OPERADOR ='-' THEN WHEN @OPERADOR ='*' THEN WHEN @OPERADOR ='/' THEN ELSE 0 --Nos devuelve cero siempre cuando --no ingresamos el Operador Correcto END AS CALCULO

Ejemplo 02

SELECT ART_COD,ART_NOM CASE WHEN ART_STK Between WHEN ART_STK Between ELSE 'Stock Alto' END AS CONDICION FROM ARTICULOS

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

CHAR(1) @NUM2 INT

Ingresando el operador Ingresando el primer numero Ingresando el segundo numero

THEN @NUM1 + @NUM2 THEN @NUM1 - @NUM2 THEN @NUM1 * @NUM2 THEN @NUM1 / @NUM2

Nos devuelve cero siempre cuando no ingresamos el Operador Correcto

ART_NOM ,ART_STK,

1 and 30 THEN 'Stock Bajo' 30 and 80 THEN 'Stock Normal'

Page 4: Manejo de Sentencia SQL Server 2005x

4 Richard Najarro Talaverano

4 Manejo de Sentencia SQL Server

WHILE (Transact-SQL) Establece una condición para la ejecución repetida de una instrucción o bloque de instrucciones SQL. Las instrucciones se ejecutan repetidamente siempre que la condición especificada sea verdadera. Se puede controlar la ejecución de instrucciones en el bucle WHILE con las palabras clave BREAK y CONTINUE. WHILE Boolean_expression BEGIN { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] { sql_statement | statement_block } END Argumentos Boolean_expression Es una expresión que devuelve TRUE o FALSE. Si la expresión booleana contiene una instrucción SELECT, la instrucción SELECT debe ir entre paréntesis. {sql_statement | statement_block} Se trata de cualquier instrucción o grupo de instrucciones Transact-SQL definidas con un bloque de instrucciones. Para definir un bloque de instrucciones, utilice las palabras clave de control de flujo BEGIN y END. BREAK Produce la salida del bucle WHILE más interno. Se ejecutan las instrucciones que aparecen después de la palabra clave END, que marca el final del bucle. CONTINUE Hace que se reinicie el bucle WHILE y omite las instrucciones que haya después de la palabra clave CONTINUE.

Page 5: Manejo de Sentencia SQL Server 2005x

5 Richard Najarro Talaverano

5 Manejo de Sentencia SQL Server

Ejemplo 01

DECLARE @PARES int,@SUMAPARES SET @PARES = 0 SET @SUMAPARES = 0 WHILE (@PARES < 10) BEGIN SET @PARES = @PARES + IF (@PARES % 2 = BEGIN PRINT 'Numeros Pares: ' SET @SUMAPARES=@SUMAPARES END END PRINT '____________________________' PRINT 'Suma de Pares: '+ str(

Ejemplo 02

DECLARE @N int,@SUMA int SET @SUMA = 0 SET @N = 45623 ----Ingresando un Numero Positivo WHILE (@N <> 0) BEGIN SET @RESTO = @N %10 SET @SUMA = @SUMA + SET @N = @N / 10 END SELECT 'La Suma de Cifras: '

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

@SUMAPARES int

1 0)

'Numeros Pares: '+ str(@PARES) @SUMAPARES+@PARES

'____________________________'

(@SUMAPARES)

int,@RESTO int

Ingresando un Numero Positivo

@RESTO

'La Suma de Cifras: '+ Ltrim(str(@SUMA))

Page 6: Manejo de Sentencia SQL Server 2005x

6 Richard Najarro Talaverano

6 Manejo de Sentencia SQL Server

Ejemplo 03

DECLARE @AñoMenor int,@AñoMayor SET @AñoMenor = (SELECT TOPORDER BY YEAR(FECHAPEDIDO SET @AñoMayor = (SELECT TOPORDER BY YEAR(FECHAPEDIDO WHILE @AñoMenor <= @AñoMayorBEGIN SELECT COUNT(IDPEDIDO) FROM PEDIDOS WHERE YEAR(FECHAPEDIDO SET @AñoMenor = @AñoMenor END

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

@AñoMayor int

TOP 1 YEAR(FECHAPEDIDO) AS AÑO FROM PEDIDOSFECHAPEDIDO) ASC)

TOP 1 YEAR(FECHAPEDIDO) AS AÑO FROM PEDIDOSFECHAPEDIDO) DESC)

@AñoMayor

AS [CANTIDAD PEDIDOS],@AñoMenor AS [AÑO DE VENTA]

FECHAPEDIDO)=@AñoMenor @AñoMenor + 1

PEDIDOS

PEDIDOS

[AÑO DE VENTA]

Page 7: Manejo de Sentencia SQL Server 2005x

7 Richard Najarro Talaverano

7 Manejo de Sentencia SQL Server

TRY/CATCH en SQL 2005 Si ocurre un error dentro de la transacción en un bloque se dirige al bloque CATCH. Para poder regresar la información del error tenemosnuevas funciones en SQL Server BEGIN TRY BEGIN TRANSACTION Bloque de código SQL a proteger COMMIT TRANSACTION END TRY BEGIN CATCH Código para mostrar el mensaje de la excepción ROLLBACK TRANSACTION END CATCH * ERROR_NUMBER(): Devuelve el número de error * ERROR_MESSAGE(): Devuelve el texto completo del mensaje de error El texto incluye los valores suministrados para los parámetros sustituibles, como longitudes * ERROR SEVERITY(): Devuelve la gravedad del error * ERROR_STATE(): Devuelve el número de estado de error * ERROR_LINE(): Devuelve el número de línea donde se produjo el error * ERROR_PROCEDURE(): Devuelve el nombre del procedimiento donde se produjo el error

Ejemplo 01

BEGIN TRY INSERT INTO Customers(Customerid VALUES('Anton', 'Leche Gloria' END TRY BEGIN CATCH SELECT 'Ha ocurrido un error! ' as Mensaje END CATCH

Richard Najarro Talaverano

Manejo de Sentencia SQL Server

Si ocurre un error dentro de la transacción en un bloque TRY inmediatamente Para poder regresar la información del error tenemos

Server, veamos cuales son:

Bloque de código SQL a proteger

Código para mostrar el mensaje de la excepción

Devuelve el número de error. Devuelve el texto completo del mensaje de error.

El texto incluye los valores suministrados para los parámetros como longitudes, nombres de objeto u horas. Devuelve la gravedad del error.

Devuelve el número de estado de error. Devuelve el número de línea donde se produjo el error.

Devuelve el nombre del procedimiento donde se produjo el error

Customerid, Companyname) 'Leche Gloria')

'Ha ocurrido un error! ' + ERROR_MESSAGE()

Devuelve el nombre del procedimiento donde se produjo el error.