|
Escrito por
Cruzemer
el 01/04/2008
Hola a todos! Estoy usando c++ para poder ejecutar instrucciones embebidas de SQL como select, insert, delete, update, compilando y ejecutando los programas en as400; con la instruccion select si lo puedo hacer, este es el codigo que uso: EXEC SQL SELECT describe_chequera Pero para las otras instrucciones que afectan los datos de la tabla, no me permite hacer cambios, sera a caso que necesito algun tipo de permisos para poder escribir en estas. Este es el codigo que uso en un update: EXEC SQL UPDATE control_concilia Estos son los codigos de error que marca: -7008 The table is in an invalid state for the operation. Por su ayuda, muchisimas gracias. |
|
|
Citar |
Ver mensaje
|
|
|
Escrito por
Ros
el 02/04/2008
Te lo paso la lectura SQL en RPG, pero da lo mismo el leguaje de programación.
Para las sentencias SQL embebidas en leguaje de programación debes de declarar un cursor, abrir dicho cursor y trabajar sobre el. Cuando declaras el cursor tienes la opción de declarar las columnas que vas actualizar, esto se hace así en as400 entre otras cosas porque a nivel de seguridad C2 (nivel 50) puede llegar incluso a definir a que columnas o campos de fichero o tabla tiene acceso un usuario. *- *DECLARACIÓN DEL CURSOR *- ========= solo lectura ========= C/EXEC SQL C+ DECLARE C1 SCROLL CURSOR FOR SELECT F2CODI, F2NOM1, F2TLF, C+ F2POBL, F2PROV, F2BLOQ, F2CIF FROM CLIL99 WHERE F2NOM1 LIKE C+ :X0NOMB AND F2CIF LIKE :XCIF ORDER BY F2NOM1 C/END-EXEC ========== lectura y escritura ========== C/EXEC SQL C+ DECLARE C1 DYNAMIC SCROLL CURSOR FOR SELECT F2CODI, F2NOM1, C+ F2TLF, F2POBL, F2PROV, F2BLOQ, F2CIF FROM CLIL99 WHERE F2NOM1 C+ LIKE :X0NOMB AND F2CIF LIKE :XCIF ORDER BY F2NOM1 FOR UPDATE OF C+ F2CODI, F2NOM1, F2NOM2 C/END-EXEC * *- *APERTURA DEL CURSOR *- C/EXEC SQL C+ OPEN C1 C/END-EXEC *- *SITUAR EN EL PRIMER REGISTRO *- C/EXEC SQL C+ FETCH BEFORE FROM C1 C/END-EXEC Si quieres saber mas te paso donde están todos los manuales, por supuesto en la lengua del imperio, http://publib-b.boulder.ibm. Com/Redbooks. Nsf/redbooks/ |
|
Al escribir en el debate:
|