在使用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即可。