SENTENCIAS DE CONTROL PARA POSTGRES
Por MigueliTUX Apr.05, 2009, categoría PostgreSQL
Esta sentencia nos permite efectuar un ciclo, su estructura básica es :
| …resto de la funcion… LOOP …sentencias a ejecutar en el ciclo… END LOOP …resto de la funcion… |
Cuando usamos un ciclo LOOP, es necesario darle una salida para que este mismo termine, la sentencia EXIT nos permite finalizar el LOOP y continuar en la sentencia siguente a la salida de éste, generalmente, EXIT está acompañado con la sentencia IF, por ejemplo
| LOOP …resto de la funcion… contador := contador + 1; IF contador >= 10 THEN EXIT; — salida del loop cuando sea mayor o igual que 10 END IF; END LOOP …resto de la funcion… |
Podemos efectuar operaciones de comparación con las sentencias IF, ELSE, los operadores de comparación son los siguientes :
| < menor que … > mayor que … <> distinto a … <= menor o igual que … >= mayor o igual que … = igual que … OR o … AND y … |
Ejemplo :
| …resto de la funcion… IF >= 10 or THEN RETURN true; ELSE |
Existen dos tipos de ciclos FOR, el primero tiene que ver claramente con los ciclos numéricos comunes, es decir, lo que comunmente se usa para efectuar repeticiones, y por otra parte, tenemos un ciclo FOR que nos permite recorrer tablas y procesar sus datos, esta segunda está ligada a sentencias SQL, veamos entonces como se utiliza la sentencia FOR
CASO 1 : SENTENCIA FOR DE PROCESO CICLICO NUMERICO
| FOR <variable> IN <inicio>..<fin> LOOP … SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR … END LOOP; o bien puede usar el FOR de forma inversa FOR <variable> REVERSE <fin>..<inicio> LOOP |
Ejemplo :
| …resto de la funcion… FOR inc IN 1..10 LOOP factorial := factorial * inc; END LOOP; RETURN factorial; …resto de la funcion… |
CASO 2: SENTENCIA FOR APLICADA A PROCESOS DE REGISTROS SQL
| FOR <registro o fila> IN <sentencia SELECT SQL> LOOP … SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR … END LOOP; |
Ejemplo :
| …resto de la funcion… DECLARE registro RECORD; BEGIN FOR registro IN SELECT * FROM productos LOOP stock := registro.sock_actual + 100; … otras sentencias … END LOOP; …resto de la funcion… |
Note que para utilizar esta sentencia FOR debemos declarar una variable de tipo RECORD o registro. RECORD es una palabra reservada para estos casos, y no posee una estructura definida pues no ha sido asignada a ninguna tabla, este tipo de dato nos permite recorrer la tabla de productos y obtener sus valores por medio de esta variable.
La sentencia WHILE se ejecuta de forma muy similar a otros lenguajes de programación, su estructura es la siguiente :
| WHILE <condicion> LOOP … SENTENCIAS A EJECUTAR DENTRO DEL CICLO WHILE … END LOOP; |
Ejemplo :
| …resto de la funcion… WHILE inc <= 10 LOOP factorial := factorial * inc; END LOOP; RETURN factorial; …resto de la funcion… |
Este codigo funciona igual al descrito en el ejemplo del ciclo FOR.
October 16th, 2009 on 1:08 pm
estos ejemplos estan excelentes, peo que digo…..excelentisimos, le doy las gracias a quien este publicando estos tips…..si pudieran dar otros tips de como trabajar las fechas
March 6th, 2010 on 1:53 pm
[...] DE CONTROL PARA POSTGRES http://www.tips.cl/archives/259 #TipsCL [...]
March 20th, 2010 on 1:51 pm
[...] DE CONTROL PARA POSTGRES http://www.tips.cl/archives/259 #TipsCL [...]
April 3rd, 2010 on 1:51 pm
[...] DE CONTROL PARA POSTGRES http://www.tips.cl/archives/259 #TipsCL [...]