Sha*_*ahe 5 oracle limit tablename
我们都知道Oracle对象名称表名列和bla-bla有30个字节的限制,我一直在网上搜索解决方案的几个小时,但我找不到任何东西,最终我放弃了.
我们正在开发一个同时使用MySQL和Oracle的应用程序,在我们开始实现Oracle之前一切正常,我们遇到了有关表和存储过程名称的问题.
我无法更改表的名称,因为应用程序已在客户端服务器上运行.
有解决方案吗 也许某些属性告诉oracle使限制大于30.
Oracle 12c 中的SQL 转换器配置文件可以帮助应用程序假装 Oracle 支持适当长度的对象名称。这可以让您在不修改应用程序的情况下更改数据库。
下面是将大于 30 字节的名称转换为短名称的简单示例:
SQL> create table short_table_name(a varchar2(100));
Table created.
SQL> insert into short_table_name values ('Success');
1 row created.
SQL> begin
2 dbms_sql_translator.create_profile('LONG_OBJECT_NAMES');
3 dbms_sql_translator.register_sql_translation(
4 profile_name => 'LONG_OBJECT_NAMES',
5 sql_text => 'select * from because_30_bytes_just_isnt_enough_sometimes',
6 translated_text => 'select * from short_table_name');
7 end;
8 /
PL/SQL procedure successfully completed.
SQL> alter session set sql_translation_profile = LONG_OBJECT_NAMES;
Session altered.
SQL> alter session set events = '10601 trace name context forever, level 32';
Session altered.
SQL> select * from because_30_bytes_just_isnt_enough_sometimes;
A
----------------------------------------------------------------------------------------------------
Success
Run Code Online (Sandbox Code Playgroud)
这可能有效,但我可以想到为什么这是一个坏主意的十几个原因。仅将此视为最后的手段。
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |