Install
openclaw skills install mysql-to-oracle-sql将 MySQL SQL(尤其是建表 DDL)转换为 Oracle SQL。用户提到“转为oracle”或“转换oracle”,或明确要求把 MySQL 语句改成 Oracle 语句时必须使用此技能。转换时强制执行类型、默认值和主键约束命名规则。
openclaw skills install mysql-to-oracle-sql将输入的 MySQL SQL 转换为 Oracle SQL,并严格执行本技能定义的定制规则。
CREATE TABLE 中移除内联主键定义,改为单独 ALTER TABLE 主键语句。NVARCHAR2。DEFAULT ''(空字符串默认值)。NOT NULL 时,显式输出 DEFAULT NULL。BIGINT 必须转换为 NUMBER(20)。ALTER TABLE <TABLE_NAME> ADD CONSTRAINT BWCT_SYS_C######## PRIMARY KEY (<PK_COLUMNS>);
约束名规则:前缀固定 BWCT_SYS_C,后接 8 位随机数字(0-9)。每个主键约束都要使用新的 8 位随机数字。
VARCHAR, CHAR, MEDIUMTEXT, TINYTEXT -> NVARCHAR2(按长度能力选择合适长度)BIGINT -> NUMBER(20)INT -> NUMBER(10)SMALLINT -> NUMBER(5)TINYINT -> NUMBER(3)DECIMAL(p,s) -> NUMBER(p,s)DATE,DATETIME -> DATETEXT, LONGTEXT -> CLOBNOT NULL),输出字段定义时包含 DEFAULT NULL。NOT NULL 且有默认值,则保留合法默认值。'',则改为DEFAULT NULL;若字段可空,则改为 DEFAULT NULL。DEFAULT CURRENT_TIMESTAMP时保持默认值不变。CREATE TABLE,再给主键 ALTER TABLE。ENGINE=、CHARSET=)。输入(MySQL):
CREATE TABLE `user_info` (
`id` BIGINT NOT NULL COMMENT '主键',
`name` VARCHAR(100) DEFAULT '' COMMENT '名称',
`note` TEXT COMMENT '笔记',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='用户信息表';
输出(Oracle):
CREATE TABLE USER_INFO (
ID NUMBER(20) NOT NULL,
NAME NVARCHAR2(100) DEFAULT NULL,
NOTE CLOB DEFAULT NULL
);
ALTER TABLE USER_INFO ADD CONSTRAINT BWCT_SYS_C02512526 PRIMARY KEY (ID);
COMMENT ON TABLE USER_INFO IS '用户信息表';
COMMENT ON COLUMN USER_INFO.ID IS '主键';
COMMENT ON COLUMN USER_INFO.NAME IS '名称';
COMMENT ON COLUMN USER_INFO.NOTE IS '笔记';