oracle12.2表名最大长度,如何在Oracle 12.2中从短表名迁移到长表名,从VARCHAR2(30)迁移到VARCHAR2(128)?...

从Oracle 12.2开始,表名和许多其他标识符改变了它们的最大长度。

VARCHAR2(30)

VARCHAR2(128)

,如f.i.所述。

here

.

我们有大量的脚本、存储过程和表,它们引用表名、列名等,例如用于管理(复制表、删除分区等)。

编辑:需要更改它们,以便在第一个较长的名称出现时继续工作我认为这可能需要一些时间,因为人们已经习惯了短名字,但可以肯定的是,这将发生在某个阶段。

正确的方法可能是从

CREATE OR REPLACE PROCEDURE myprocedure(pname VARCHAR2) IS

tabname VARCHAR2(30);

colname VARCHAR2(30);

idxname VARCHAR2(30);

BEGIN

tabname := pname;

END myprocedure;

/

CREATE OR REPLACE PROCEDURE myprocedure(pname VARCHAR2) IS

tabname USER_TABLES.TABLE_NAME%TYPE;

colname USER_TAB_COLUMNS.COLUMN_NAME%TYPE;

idxname USER_INDEXES.INDEX_NAME%TYPE;

BEGIN

tabname := pname;

END myprocedure;

/

但是桌子怎么办呢我唯一能找到的想法是一个禁用的外键,但这似乎是邪恶的(此外,我甚至不能获得正确的特权):

CREATE TABLE mytable (

table_name REFERENCES USER_TABLES(TABLE_NAME) DISABLE

);

任何帮助赞赏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值