PDA

Ver la Versión Completa : [Sintaxis] Campos VARBINARY ó BLOB en COBOL


Josber
1 de diciembre de 2015, 18:06
Alguien puede decirme la correspondencia de un campo en MYSQL definido como VARBINARY(64) cómo se definiría en COBOL, o en su defecto un campo BLOB en MYSQL

Muchas gracias.-

Kuk
1 de diciembre de 2015, 23:05
Josber, los CLOB y BLOB no existen en COBOL, que yo sepa. El VARBINARY no sé ni lo que es. Pero seguramente sea una estructura parecida a la de VARCHAR, es decir:


01 MI-VARCHAR.
49 MI-VARCHAR-L PIC S9(4) COMP-4.
49 MI-VARCHAR-X PIC X(64).


Según he leído en internet, el VARBINARY ese es como el VARCHAR pero lleva otra codificación o algo así (he echado un ojo, tampoco he leído mucho) y no es un campo binario.

Fito
1 de diciembre de 2015, 23:39
Hola:
Soy sumamente neófito en el tema, pero fijate si te sirve algo de esto.

saludos. Fito...

IBM Knowledge Center (http://www-01.ibm.com/support/knowledgecenter/SSEPGG_8.2.0/com.ibm.db2.udb.doc/ad/r0006152.htm?lang=es)

Josber
2 de diciembre de 2015, 19:21
Nada, no hay manera, necesito un campo tipo BLOB, (MediumBLOB para ser exactos) o VARBINARY, para poder encriptar un dato con AES_ENCRYPT, (según el manual de MySQL, es el tipo de campo que debe de usarse para un campo encriptado), y he probado de todas las formas que se me han ocurrido, incluso he creado el campo como VARCHAR, pero no funciona, cuando lo leo con AES_DECRYPT, me lo devuelve en blanco, ni siquiera NULL, sino en blanco.

Un saludo.-

Kuk
3 de diciembre de 2015, 13:26
Josber, he mirado más por internet y lo que he encontrado definitivamente es lo que decía antes:



TEXT and CHAR will convert to/from the character set they have associated with time. BLOB and BINARY simply store bytes.

BLOB is used for storing binary data while Text is used to store large string.

BLOB values are treated as binary strings (byte strings). They have no character set, and sorting and comparison are based on the numeric values of the bytes in column values.

TEXT values are treated as nonbinary strings (character strings). They have a character set, and values are sorted and compared based on the collation of the character set.

MySQL :: MySQL 5.0 Reference Manual :: 11.4.3 The BLOB and TEXT Types (http://dev.mysql.com/doc/refman/5.0/en/blob.html)



Es decir, el BLOB como tal no existe en COBOL. Pero en definitiva sigue siendo texto, lo que pasa es que mientras que a los CHAR se les asigna un CHARACTER SET para mostrar el juego te caracteres correspondiente a una codificación, los BLOB y VARBINARY no tienen CHARACTER SET y se asigna byte por byte el código que tú le metas. Con lo cual, digo yo que debería funcionarte como si fuera un PIC X(?).

MySQL :: MySQL 5.0 Reference Manual :: 11.1.3 String Type Overview (http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html)

Specifying the CHARACTER SET binary attribute for a character data type causes the column to be created as the corresponding binary data type: CHAR becomes BINARY, VARCHAR becomes VARBINARY, and TEXT becomes BLOB.

La longitud del BLOB máxima es de 255 caracteres. Por ello debe ser, sea un PIC X(255), sea también puedes probar con un campo padre:


01 MI-BLOB.
49 FILLER PIC X(256).


Para VARBINARY debería ser sea:


01 MI-VARBIN.
49 MI-VARBIN-L PIC S9(4) COMP-4.
49 MI-VARBIN-D PIC X(256).


Sea lo mismo pero haciendo MI-VARBIN-D (datos) como MI-BLOB, es decir con campo padre.

A ver qué tal... ;)