Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Sintaxis] SQL embebido - cursor con COUNT() en PowerCOBOL 7 | drvedia1981 | PowerCOBOL (ActiveX, v4 - v11) | 13 | 7 de junio de 2023 11:28 |
| [Sintaxis] Sql Embebido condición where | Hrmcobol | PowerCOBOL (ActiveX, v4 - v11) | 3 | 25 de abril de 2020 21:43 |
| [Compilador] Microfocus Cobol y SQL Embebido | EBERCAMACHO | Micro Focus COBOL | 3 | 9 de agosto de 2019 16:07 |
| [PowerCOBOL] Ejemplo PWC y SQL Embebido | Josber | Cocina PowerCOBOL | 10 | 15 de junio de 2017 03:17 |
| [Sintaxis] Variables en programa con SQL embebido | DYANY | IBM Enterprise COBOL | 1 | 20 de diciembre de 2016 16:26 |
![]() |
|
Guardián del Foro
|
Hola camaradas, nunca use esta modalidad de acceso, use siempre DbAccessControl, de Power, necesitaría un código como ejemplo de como hacer para leer un tabla de una base, vía una ODBC. Estoy leyendo el manual pero no doy pie con bola.
En algún momento alguien subió algo al respecto, pero no logro encontrarlo. Lo que quiero hacer en concreto es agregar campos a tablas ya existentes, tambien crear tablas nuevas en una base. Se que las instrucciones son CreateTable y AlterTable. Todo desde un programa cobol. Saludos y Gracias !! |
||||||||
|
|
|
|
Moderador Global
![]()
|
A ver Hrm, primero tienes que empezar definiendo la estructura de la tabla en la WORKING, (y todas las variables que vayas a usar en SQL), por ejemplo
Código COBOL:
Ten en cuenta que TODAS las variables numéricas, en la WORKING tienen que llevar signo SÍ o SÍ. - PARA LEER EL NÚMERO DE REGISTROS: Código COBOL:
en CONTASQL se almacenaría el total de registros - PARA LEER UN REGISTRO ESPECÍFICO Código COBOL:
- PARA LEER UN RANGO ESPECÍFICO DE REGISTROS Código COBOL:
- PARA INSERTAR UN NUEVO REGISTRO Código COBOL:
El primer campo es NULL, porque el campo ID_GAS, que es la clave principal, es un campo AUTO_INCREMENT. - PARA MODIFICAR UN REGISTRO EXISTENTE: Código COBOL:
Aquí no puedes poner el primer campo, porque la llave principal, no se puede volver a grabar, si lo pusieras daría el error S200 en SQLSTATE. despues de cada vez que INSERTES/MODIFIQUES un registro, has de poner Código COBOL:
o de lo contrario, no te modificará la tabla, en caso que que quiereas desacer los cambios, cambias el COMMIT por ROLLBACK, pero una vez que haya hecho el COMMIT, los cambios no se pueden deshacer. Creo que está todo, si tienes dudas o problemas, dinoslo. Un saludo.- |
||||||||
|
|
|
|
Moderador Global
![]()
|
Se me ha pasado el ponerte como se crea la tabla
Código COBOL:
Si no pones la instrucción IF NOT EXIST, te dará error si la tabla ya existe - Si deseas eliminar elementos de la tabla: Código COBOL:
- Si quieres vaciar por completo una tabla, además de poner el contador AUTO_INCREMENT a 0, (si lo tiene la tabla, que no es obligatorio) Código COBOL:
- Si quieres eliminar por completo la tabla, (datos y estructura) Código COBOL:
¡Cuidado! que TRUNCATE y DROP, no tienen vuelta atrás Si quieres ver cómo esta creada una tabla, desde el administrador de BD, no desde tu programa COBOL Código SQL:
Esto te daría un fichero de texto plano muy similar al que utilizas para crear la tabla. Un saludo y suerte.- ---------- Post añadido : 11:46 ---------- Post anterior : 11:30 ---------- Otra cosa a tener en cuenta, es cuando creas un número en SQL y has de ponerle un tamaño con decimales, esto se define entre paréntesis, el primer número indica el tamaño total, (incluidos los decimales) y el segundo los decimales, por ejemplo, un campo en COBOL del tipo Código COBOL:
en SQL, sería Código SQL:
Si te fijas WDECIMAL en SQL, tiene un tamaño de 10, de los que 3 son decimales. Los campos en SQL, se separan utilizando el símbolo de la , (coma), y las instrucciones se separan utilizando el símbolo ; (punto y coma), por ejemplo: Código COBOL:
Cuidado con las comas y los punto y comas, que son obligatorios y es muy estricto en ésto. Un saludo |
||||||||
|
|
|
|
Administrador
![]()
|
Hrmcobol, si no me equivoco, tienes que crear un fichero *.inf con la configuración de la conexión e indicarlo en COBOL85.CBR con la variable @ODBC_Inf.
Ejemplo: Código:
@ODBC_Inf=PRUEBA.inf NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Como primer paso en tu proyecto deberias direccionar donde estara tu archivo de coneccion via odbc (ojo .. por fuera podes cambiar esa direccion tambien)
Luego ejecutar el SQLODBCS a los efectos de crear la sesion con el archivo de coneccion seleccionas una seccon en este caso la llame SV4 asociada a una base "cursos", con su usuario y clave (root y su clave) luego en la procedure estableces la coneccion y trabajas con todas aquellas posiblidades que te brindo josber con comandos sql al finalizar el programas te desconectas |
||||||||
|
|
|
|
Guardián del Foro
|
Estimados, ante todo gracias por vuestra colaboración.
Ya he logrado leer y agregar registros a la tabla. Aprendí la conexión Odbc/Cobol85/Sql.Inf Ahora lo que quiero hacer es crear una tabla nueva con la instrucción CREATE TABLE, como se imaginaran copie el código del post que puso Josber, cuando compilo me da el siguiente error: ART00101 CbLeer1-Click(20) : JMN2633I-S The SQL statement is invalid. ODBC-7600E NOT EXECUTABLE SQL STATEMENT.. Aparentemente el error es que " Create Table" no esta soportado. Alguna idea? Saludos Les adjunto el código que escribí Código COBOL:
|
||||||||
|
|
|
|
Forero Junior
![]()
|
Hola Hrm
Creo haber leído en algún sitio, ahora no recuerdo donde, que desde el SQL embebido solo puedes hacer uso del lenguaje DML (Data Manipulation Laguaje) que es que estáis comentando aquí, pero no puedes hacer uso del DDL (Data Definition Laguaje) que es el que sirve para definir objetos en la base de datos (Tablas, Vistas, etc.) |
||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||