pl/sql报错:Identifier is too long

在使用pl/sql的时候出现了:Identifier is too long这个错误,字面的意思是标识符过长,也查过资料,基本上都是说:标识符是不可以超过30。

解决方法1:

Cause: The name of a schema object exceeds 30 characters. Schema objects are
tables, clusters, views, indexes, synonyms, tablespaces, and usernames.
Action: Shorten the name to 30 characters or less.
这个是官方的说法,大致意思就是说你起的名字(标识符)不可以超过30个字符,包括:表,视图,索引,簇,同义词,表空间,和用户名。

解决方法2:

如果是第一种方法中所造成的错误还好,但是我的错误并不是标识符超过30个字符所造成的。下面是我执行的时候遇到的报错sql:

SELECT T.NATI_TASK_ID 主键,
       D.AREA_NAME 地点名称,
       T.MANAGE_TYPE 类型,
       SP.DATA_END_DATE 结束时间,
       T.CRE_USER_ROLE_ID 角色ID
       .......--之间还有一些类似的条件
  FROM CS_NATI_TASKL T


我这个sql中并没有超过30个字符的标识符,但是也报了:Identifier is too long这个错误。

看起来很奇怪,我的名称都没有超过30个字符,怎么就出现这个错误了呢?

仔细想一下,其实这个错误也不奇怪,我们应该可以想到是字符集不匹配所造成的。

先不管是不是这个原因造成的,先试一下。我们在环境变量中加入:

变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(也可以使用:AMERICAN_AMERICA.UTF8)

重新启动pl/sql,OK!搞定,可以执行了。

解决方法3:

这个方法和方法2的解决思路是一样的,只是途径不同,此方法是直接通过注册表来修改的。

运行:regedit -- HKEY_LOCAL_MACHINE -- SOFTWARE -- ORACLE -- KEY_OraClient11g_home1和KEY_OraDb11g_home1

找到NLS_LANG修改为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK即可。


你可能感兴趣的:(常见错误)