Está en la página 1de 10

BASE DE DATOS

INGENIERIA DE SISTEMAS

CONSTRUCTORES DE CONTROL DE FLUJO

Variables :
Una variable local es un objeto que contiene un valor individual de datos de un tipo especfico. Normalmente, las variables se utilizan en lotes y secuencias de comandos: Como contadores, para contar el nmero de veces que se realiza un bucle o controlar cuntas veces debe ejecutarse. Para contener un valor de datos que desea probar mediante una instruccin de control de flujo. Para guardar el valor de un dato que se va a devolver en un cdigo de retorno de un procedimiento almacenado

Declarar variables locales con DECLARE


DECLARE Nombre_Variable Tipo_Dato

Este comando se usa para declarar variables locales. Para proporcionar un valor por defecto para la variable, incluya una clusula DEFAULT . El valor puede especificarse como expresin, no necesita ser una constante. Si la clusula DEFAULT no est presente, el valor inicial es NULL. La visibilidad de una variable local es dentro del bloque BEGIN ... END donde est declarado. Puede usarse en bloques anidados excepto aqullos que declaren una variable con el mismo nombre. ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

Sentencia SET para variables


SET Nombre_Variable = Valor

El comando SET en procedimientos almacenados es una versin extendida del comando general SET. Las variables referenciadas pueden ser las declaradas dentro de una rutina, o variables de servidor globales. El comando SET en procedimientos almacenados se implementa como parte de la sintaxis SET pre-existente. Esto permite una sintaxis extendida de SET a=x, b=y. donde distintos tipos de variables (variables declaradas local y globalmente y variables de sesin del servidor) pueden mezclarse. Esto permite combinaciones de variables locales y algunas opciones que tienen sentido slo

La sentencia SELECT

... INTO

SELECT Nombre_Campo,... INTO Nombre_Variable ,... from Nombre_Tabla Esta sintaxis SELECT almacena columnas seleccionadas directamente en variables. Por lo tanto, slo un registro puede retornarse. SELECT id, data INTO x,y FROM test.t1 LIMIT 1;

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

Constructores de control de flujo


Los constructores IF, CASE, LOOP, WHILE, ITERATE, y LEAVE estn completamente implementados. Estos constructores pueden contener un comando simple, o un bloque de comandos usando el comando compuesto BEGIN ... END. Los constructores pueden estar anidados. Los bucles FOR no estn soportados

Sentencia IF
IF <condicion> THEN Proceso 1 ELSEIF <condicion 2> THEN Proceso 2 ELSE Proceso 3 END IF

implementa un constructor condicional bsico. Si <condicin > se evala a cierto, el comando SQL correspondiente listado se ejecuta. Si no coincide ninguna <condicion> se ejecuta el comando listado en la clusula ELSE. <Proceso> puede consistir en varios comandos.
IF

La sentencia CASE
CASE case_value WHEN when_value THEN statement_list WHEN when_value THEN statement_list ELSE statement_list END CASE

O:

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

CASE
WHEN search_condition THEN statement_list WHEN search_condition THEN statement_list ELSE statement_list END CASE

El comando CASE para procedimientos almacenados implementa un constructor condicional complejo. Si una search_condition se evala a cierto, el comando SQL correspondiente se ejecuta. Si no coincide ninguna condicin de bsqueda, el comando en la clusula ELSE se ejecuta.

Sentencia LOOP [begin_label:] LOOP statement_list END LOOP [end_label] LOOP implementa un constructor de bucle simple que permite ejecucin repetida de comandos particulares. El comando dentro del bucle se repite hasta que acaba el bucle, usualmente con un comando LEAVE . Un comando LOOP puede etiquetarse. end_label no puede darse hasta que est presente begin_label , y si ambos lo estn, deben ser el mismo.

Sentencia LEAVE LEAVE label Este comando se usa para abandonar cualquier control de flujo etiquetado. Puede usarse con BEGIN ... END o bucles.

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

La setencia ITERATE ITERATE label ITERATE slo puede aparecer en comandos LOOP, REPEAT, y WHILE . ITERATE significa vuelve a hacer el bucle. Sentencia REPEAT [begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT [end_label] El comando/s dentro de un comando REPEAT se repite hasta que la condicin search_condition es cierta. Un comando REPEAT puede etiquetarse. end_label no puede darse a no ser que begin_label est presente, y si lo estn, deben ser el mismo.

Sentencia WHILE [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label] El comado/s dentro de un comando WHILE se repite mientras la condicin search_condition es cierta. Un comando WHILE puede etiquetarse. end_label no puede darse a no ser que begin_label tambin est presente, y si lo estn, deben ser el mismo.

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

Vamos a utilizar las tablas producto y categora de la base de datos ventas

Ejemplos 1: Elaborar un procedimiento almacenado que permita insertar un registro a la tabla categora el id categora se debe autogenerar considerando la primera letra la letra c y un correlativo de 4 dgitos, la descripcin debe ser ingresada.

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

Ejemplo 2: Elaborar un procedimiento almacenado que permita insertar un registro a la tabla producto se debe insertar el improducto, nombre, precio, stock y la descripcin de la categora.

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

ING. IVAN IMAN AGURTO

BASE DE DATOS

INGENIERIA DE SISTEMAS

ING. IVAN IMAN AGURTO

También podría gustarte