gpt4 book ai didi

oracle - 使 Oracle 限制大于 30

转载 作者:行者123 更新时间:2023-12-04 20:08:24 26 4
gpt4 key购买 nike

我们都知道 Oracle 对对象名称表名称列和 bla-bla 的限制为 30 个字节,我已经在网上搜索了几个小时以寻找解决方案,但我找不到任何东西,最终我放弃了。

我们正在开发一个同时使用 MySQL 和 Oracle 的应用程序,一切正常,直到我们开始实现 Oracle,我们遇到了有关表和存储过程名称的问题。

我无法更改表的名称,因为该应用程序已在客户端服务器上运行。

有什么解决办法吗?也许有一些属性告诉 oracle 使限制大于 30。

最佳答案

SQL Translator Profiles在 Oracle 12c 中可能会帮助应用程序假装 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

这可能会奏效,但我能想到十几个为什么这是一个坏主意的原因。仅将此视为最后的手段。

关于oracle - 使 Oracle 限制大于 30,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com