私は次のようなクエリを持っています:
SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name
エラーORA-00972識別子が長すぎます。エイリアスを短くせずに機能させるためのヒントはありますか?
ありがとう
回答:
いいえ、Oracleバージョン12.2より前では、識別子の長さは30文字を超えることはできません。『Oracle SQL言語リファレンス』を参照してください。
ただし、バージョン12.2以降では、最大128バイトの長さにすることができます。(注:文字ではなくバイト)。
このエラーは、引用符と単一引用符の扱いがおかしいことによっても発生します。クエリ内に一重引用符を含めるには、二重一重引用符を使用します。
これは機能しません
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;
Oracleが識別子の名前を格納するオブジェクト(たとえば、ユーザーのテーブル名はUSER_TABLESという名前のテーブルに格納され、ユーザーの列名はUSER_TAB_COLUMNSという名前のテーブルに格納されます)には、NAME列(たとえば、TABLE_NAME)があります。サイズVarchar2(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
他の人が言及しているように、OracleSQLの名前は30文字以下でなければなりません。このルールは、テーブル名だけでなくフィールド名にも適用されることを付け加えておきます。だからあなたはそれを持っています。