【问题标题】:Why is there a maximum length for stored procedure names? [duplicate]为什么存储过程名称有最大长度? [复制]
【发布时间】:2012-06-26 19:47:13
【问题描述】:

可能重复:
Why are Oracle table/column/index names limited to 30 characters?

在 Oracle 中编写存储过程时,我选择了一个特别具有描述性的名称,但在尝试更新脚本时,我被告知该名称太长。

37  15  PLS-00114: identifier 'blah_blah_blah_blah_blah_blah' too long

为什么对存储的过程名称有如此严格的限制?这只是 Oracle 特有的还是在其他数据库系统中很常见?


对不起duplicate

【问题讨论】:

  • 在 SQL Server 中它是 128 字符,因为这是 sysname(系统基表中使用的数据类型)的最大长度
  • 这比 Oracle 中的 30 好很多,我很快就发现了。
  • 因为 Oracle 诞生于 30 个字符被认为绰绰有余的时代!毕竟,8 个字符的文件名,30 是一吨!
  • @JWiley:更好? - 我不认为一个 128 字符的存储过程名称是特别可取的。 30 看起来简洁明了。
  • @JonEgerton 直到您添加“标准”前缀、后缀等。然后你的表名有 20 个字符,如果你试图描述,你会失败。我想要一个介于我的 ORDER_LINE_ITEM 和 PRODUCT_COMPONENT_MANIFEST 表之间的多对多表......我该如何命名它? ORDER_LINE_ITEM_PRODUCT_COMPONENT_MANIFEST...当有 500 个这样命名的表时,祝您逆向工程 OLI_PCM...

标签: sql oracle stored-procedures


【解决方案1】:

它实际上仅在 Oracle 中为 30 个字符。

每种语言/数据库在定义名称时都有长度限制,因为在数据库中创建的每个对象的名称都存储在系统表中,并且每列都有一定的长度。

为了性能,我们在 DB 的情况下保持名称简短。

【讨论】:

  • hmm 这如何回答为什么对存储的过程名称有如此严格的限制?
  • 因为这也出现在 MySQL 中 - 对于 MySQL 5.7(可能还有其他版本),它是 64 - 手动 - dev.mysql.com/doc/refman/5.7/en/identifiers.html
  • @ConradFrix 我已经提到所有数据库对象信息都存储在系统表本身中。表格有列,它们有一些定义的大小,因此限制了要存储的内容长度。
  • 我认为重点是,为什么 Oracle 会选择如此严格的长度?你说这是为了表演。但我想知道如果是 60 或 64 或其他什么,性能会受到什么影响。当考虑到其他人的代码可读性时,我经常发现 30 的限制。
猜你喜欢
  • 2018-06-15
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多