web-dev-qa-db-ja.com

ORA-00972識別子の列名が長すぎます

私のようなクエリがあります:

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name

エラーを返しますORA-00972識別子が長すぎます、エイリアスを短くせずに動作させるヒントはありますか?

ありがとう

67
mcha

いいえ、Oracleバージョン12.2より前では、識別子は30文字を超えることはできません。 Oracle SQL言語リファレンス を参照してください。

ただし、 バージョン12.2からは最大128バイトの長さにすることができます (注:文字ではなくバイト)。

90
Tony Andrews

このエラーは、引用符と単一引用符の風変わりな処理によっても発生します。クエリ内に単一引用符を含めるには、doubled単一引用符を使用します。

これは機能しません

select dbms_xmlgen.getxml("Select ....") XML from dual;

またはこれ

select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;

しかし、これは動作します

select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
11
mike cummings

Oracleが識別子の名前を保存するオブジェクト(たとえば、ユーザーのテーブル名はUSER_TABLESという名前のテーブルに保存され、ユーザーの列名はUSER_TAB_COLUMNSという名前のテーブルに保存されます)には、NAME列(たとえばTABLE_NAME var_char2(30)のサイズのUSER_TABLES)...そして、オブジェクトまたは識別子のすべてのシステムテーブルを通じて均一です-

 DBA_ALL_TABLES         ALL_ALL_TABLES        USER_ALL_TABLES
 DBA_PARTIAL_DROP_TABS  ALL_PARTIAL_DROP_TABS USER_PARTIAL_DROP_TABS
 DBA_PART_TABLES        ALL_PART_TABLES       USER_PART_TABLES 
 DBA_TABLES             ALL_TABLES            USER_TABLES           
 DBA_TABLESPACES        USER_TABLESPACES      TAB
 DBA_TAB_COLUMNS      ALL_TAB_COLUMNS         USER_TAB_COLUMNS 
 DBA_TAB_COLS         ALL_TAB_COLS            USER_TAB_COLS 
 DBA_TAB_COMMENTS     ALL_TAB_COMMENTS        USER_TAB_COMMENTS 
 DBA_TAB_HISTOGRAMS   ALL_TAB_HISTOGRAMS      USER_TAB_HISTOGRAMS 
 DBA_TAB_MODIFICATIONS  ALL_TAB_MODIFICATIONS USER_TAB_MODIFICATIONS 
 DBA_TAB_PARTITIONS   ALL_TAB_PARTITIONS      USER_TAB_PARTITIONS
4
Saptarshi

Argosレポートシステムをフロントエンドとして使用し、Oracleを使用しています。このエラーが発生したのは、先頭に二重引用符があり、末尾に単一引用符がある文字列が原因でした。二重引用符を単一引用符に置き換えると、問題が解決しました。

3
John

最近springbootを1.4.3にアップグレードした場合、ymlファイルに変更を加える必要がある場合があります。

1.3のyml:

jpa: 
  hibernate: 
    namingStrategy: org.hibernate.cfg.EJB3NamingStrategy

1.4.3のyml:

jpa: 
  hibernate: 
    naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
0
NiTiN