Foro de Cobol
Registrate en el Foro de Cobol y Aporta tus experiencias y conocimientos sobre este lenguaje de programacion, con tu ayuda el foro crecera y todos nos podremos beneficiar de los conocimientos de los demas.

Gracias por entrar a COBOLEROS.ES
Síguenos en Twitter

Referencias SLQ

Ver el tema anterior Ver el tema siguiente Ir abajo

Referencias SLQ

Mensaje por Coboler@ el Jue Feb 03, 2011 12:34 am

VARIAS COSAS DE SQL


Se tiene que incluir la SQLCA que contiene las variables que utiliza el SQL, como la SQLCODE, tiene la siguientes estructura:

01 SQLCA.
05 SQLCAID PIC X( 8 ).
05 SQLCABC PIC S9(9) COMP-4.
05 SQLCODE PIC S9(9) COMP-4.
05 SQLERRM.
15 SQLERRML PIC S9(9) COMP-4.
15 SQLERRMC PIC X(70).
05 SQLERRP PIC X( 8 ).
05 SQLERRD PIC S9(9) COMP-4 OCCURS 6.
05 SQLWARN.
15 SQLARN0 PIC X.
15 SQLARN1 PIC X.
15 SQLARN2 PIC X.
15 SQLARN3 PIC X.
15 SQLARN4 PIC X.
15 SQLARN5 PIC X.
15 SQLARN6 PIC X.
15 SQLARN7 PIC X.
05 SQLEXT PIC X( 8 ).



SELECT
SELECT lista-campos1 FROM nombre-tabla1 WHERE campo = valor

SELECT lista-campos1 FROM nombre-tabla1 ORDER BY campo

SELECT lista-campos1 FROM nombre-tabla1 WHERE campo IN (valor1, valor2, valor3..)

SELECT lista-campos1 FROM nombre-tabla1 WHERE campo BETWEEN valor1 AND valor2.

SELECT lista-campos1 FROM nombre-tabla1 WHERE campo LIKE ‘%MADRID’
El símbolo % solo se puede poner al principio o al final.

SELECT campo1 operador campo2 campo3 FROM nombre-tabla1
Donde operador puede ser +, - , *, /. Todas las demás cláusulas se pueden combinar con estas.

SELECT COUNT(*) FROM nombre-tabla1
Cuenta el número de filas, si hubiera WHERE, las que cumplan la condición.

SELECT SUM(campo1) FROM nombre-tabla1
Suma el contenido de uno o más campos.

SELECT AVG(campo1) FROM nombre-tabla1
Media aritmética.

SELECT MAX/MIN(campo1) FROM nombre-tabla1
Haya el valor máximo / mínimo.


SELECT DECIMAL(campo1) FROM nombre-tabla1
Convierte numérico a decimal.

SELECT DIGITS(campo1) FROM nombre-tabla1
Convierte numérico a carácter.

SELECT FLOAT(campo1) FROM nombre-tabla1
Convierte numérico a float.

SELECT INTEGER(campo1) FROM nombre-tabla1
Convierte numérico a entero.

SELECT AVG(campo1) FROM nombre-tabla1
Media aritmética.

SELECT SUBSTR(DIGITS(campo-numérico1), 3,2) FROM nombre-tabla1
Selecciona a partir de la posición 3 incluida, 2 posiciones. Es decir, selecciona la posición 3 y 4. Solo lo puede hacer de un campo de caracteres por tanto si es numérico habrá que convertirlo a carácter con dígitos.

SELECT Departamento, AVG(Salario)
FROM nombre-tabla1
GROUP BY Departamento
HAVING (Salario) > 1000
Selecciona una fila por departamento con el salario medio en cada uno de los que tengan un salario superior a 1.000 €.

SELECT campo1, campo2, campo3
FROM nombre-tabla1, nombre-tabla2
WHERE nombre-tabla1.campo1 = nombre-tabla2.campo1
Selecciona campos de distintas tablas al mismo tiempo, estas tablas deben tener alguna columna en común. Se debe especificar cuando se utilice un campo con el mismo nombre en las dos tablas a que tabla pertenece con la forma nombre-tabla1.campo.

SELECT campo1, campo2, campo3
FROM nombre-tabla1
WHERE campo1 = valor AND campo2 > (SELECT MIN(campo5)
FROM nombre-tabla1)
Selecciona los campos indicados que cumplen la condición. Siendo la condición última que el campo2 sea mayor que el valor mínimo que hay en el campo5.

SELECT campo1, campo2
FROM nombre-tabla1
WHERE campo1 = valor
UNION [ALL]
SELECT campo3, campo4
FROM nombre-tabla2
WHERE campo10 = valor
Selecciona una combinación de los campos de las dos tablas eliminando las filas duplicadas. Por tanto es obligatorio que las columnas sean del mismo tipo, aunque no es necesario que sean de la misma longitud.
Si se pone UNION ALL en de UNION no se eliminan las filas duplicadas.
Si se pone una cláusula ORDER BY se pondría después de los dos SELECT.


UPDATE
UPDATE nombre-tabla1 SET campo = valor WHERE condición


DELETE
DELETE * FROM nombre-tabla1 WHERE condición


INSERT
INSERT INTO nombre-tabla1/vista VALUES (valor1, valor2)
INSERT INTO nombre-tabla1 SELECT lista-campos1 FROM nombre-tabla2.







SENTENCIAS DE AUTORIZACION


GRANT
GRANT ALL/SELECT/INSERT/UPDATE/DELETE/INDEX
ON nombre-tabla1/vista
TO usuario(s)/PUBLIC
Autoriza operaciones sobre tablas o vistas a uno, varios o todos los usuarios.


REVOKE
REVOKE ALL/SELECT/INSERT/UPDATE/DELETE/INDEX
ON nombre-tabla1/vista
TO usuario(s)/PUBLIC
Desautoriza operaciones sobre tablas o vistas a uno, varios o todos los usuarios.

LOCK
LOCK TABLE nombre-tabla1
IN SHARE/EXCLUSIVE MODE
Bloquea una tabla en modo exclusivo o compartido, si lo hace en modo exclusivo solo puede actualizar datos el usuario que tenga bloqueado el fichero en exclusivo.


COMMIT
Confirma los cambios efectuados en la base de datos y libera los bloqueos.


ROLLBACK
Anula todas las actualizaciones de la base de datos.





DECLARACION DE UN CURSOR


DECLARE
DECLARE nombre-cursor1 CURSOR FOR
SELECT lista-campos1
FROM nombre-tabla1
ORDER BY campo
Declara un cursor que contendrá todas las columnas definidas en lista-campos1 de la tabla ordenadas por campo. El SELECT puede tener cualquier formato de los especificados anteriormente. Esto se usa para seleccionar varias filas que cumplen una condición.

OPEN
OPEN nombre-cursor1
Abre el cursor que se especifica.


FETCH
FETCH nombre-cursor1
INTO variable-host1
Lee secuencialmente el cursor dejando el resultado en la variable especificada.

CLOSE
CLOSE nombre-cursor1
Cierra el cursor que se especifica.

avatar
Coboler@
Admin

Mensajes : 215
Reputación : 19
Fecha de inscripción : 02/02/2011
Edad : 37
Localización : Madrid

Ver perfil de usuario http://www.coboleros.es

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.