Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Respuesta
 
Herramientas

  #1
Antiguo 25 de mayo de 2026, 10:39
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 19.09.2026 12:26
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Predeterminado SQL Embebido, SÍ se puede CREATE, ALTER, DROP ...
1 Inactivo Inactivo

Haciendo una búsqueda específica el otro día, encontré Éste Post, en el que decíamos que con SQL Embebido, sólo se pueden usar las instrucciones que tenga el Precompilador de SQL, como referencia para todos los usuarios, se puede usar CASI cualquier sentencia que necesitemos, (no sé si todas, pero sí puedo decir que todas las que he necesitado sí se puede). La forma es muy simple, montar un STRING a una variable, hacer un PREPARE y después un EXECUTE

Por ejemplo, para crear una tabla, que en el post de referencia, no sabíamos como hacerlo:

Código COBOL:
  1.         INITIALIZE SQL_CMD.
  2.         STRING "CREATE TABLE IF NOT EXIST `Alphas` ( "
  3.             "`ALPCOD` CHAR(2) NOT NULL COLLATE 'utf8mb4_uca1400_spanish_ai_cs', "
  4.                     "`ALPDES` CHAR(30) NULL DEFAULT NULL COLLATE 'utf8mb4_uca1400_spanish_ai_cs', "
  5.             "PRIMARY KEY (`ALPCOD`) USING BTREE "
  6.             ") "
  7.             "COMMENT='Series Alpha' "
  8.             "COLLATE='utf8mb4_uca1400_spanish_ai_cs' "
  9.             "ENGINE=InnoDB; " DELIMITED BY SIZE INTO SQL_CMD
  10.           END-STRING.
  11.      EXEC SQL
  12.          PREPARE S1 FROM :SQL_CMD
  13.      END-EXEC.
  14.  
  15.      EXEC SQL
  16.           EXECUTE S1
  17.      END-EXEC.

o, para vaciar una tabla

Código COBOL:
  1.  
  2.      INITIALIZE SQL_CMD.
  3.      MOVE "TRUNCATE TABLE implin" TO SQL_CMD.
  4.  
  5.      EXEC SQL
  6.          PREPARE S1 FROM :SQL_CMD
  7.      END-EXEC.
  8.  
  9.      EXEC SQL
  10.           EXECUTE S1
  11.      END-EXEC.

Mientras se pueda hacer con un PREPARE/EXECUTE, colará la instrucción. Sólo hay que tener en cuenta una cosa, y es que si controláis los errores de SQLSTATE, si la sentencia SQL no devuelve ningún dato, devolverá SIEMPRE el error [02000] [No data is found], eso es porque éste tipo de sentencia, espera que se devuelva algún dato de retorno, pero no es nada, la instrucción se ejecuta perfectamente, por cierto, no es necesario un COMMIT después.

Por lo menos ya podemos ejecutar el 99% de las sentencias sql.


Un salu2 a tod@s



P.D.: mis pruebas, están basadas en MariaDB v.12
Josber is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:10.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.