从 Oracle 迁移到 MySQL。使用字节定义的 VARCHAR2 长度。如何移植?

Migrating from Oracle to MySQL. VARCHAR2 length defined using bytes. How to port?

我在 Oracle 过程中有这样声明的变量:

myMsg  VARCHAR2(256 BYTE)

如何将其移植到 mysql?因为当我尝试在 MySQL 过程中声明它时:

DECLARE myMsg VARCHAR(256 BYTE);

MySQL 抛出语法错误。


如何将该 Oracle 变量定义移植到 MySQL?


256 BYTE 部分不允许我在 MySQL 中声明变量,我需要在 MySQL 中找到类似于此 256 BYTE 表达式的内容。

mysqlvarchar的最大大小是mysql 5.0.3

之前的255

来自 MySql 文档:

A variable-length string. M represents the maximum column length in characters. In MySQL 5.0, the range of M is 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in MySQL 5.0.3 and later

MySQL 5.0.3 and later 中,长度大于 255CHAR 是非法的并且失败并出现错误

mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500));
ERROR 1074 (42000): Column length too big for column 'col' (max = 255);
**use BLOB or TEXT instead**

在错误中明确提到 use BLOB or TEXT

有关 string data type link

的更多信息

在 MySql 中,varchar 列是这样声明的

   colname VARCHAR(256),
   another VARCHAR(20) NOT NULL,

等等。 Oracle 语法不同。

在 MySql 中的存储代码中,在函数或过程范围内,变量声明如下:

    DECLARE myMsg VARCHAR(256);

如果您没有意识到这一点,您很快就会发现:Oracle PL/SQL 和 MySql 用于存储代码的小语言彼此非常不同。

这将是 MySQL 中的 VARBINARY(256)