oracle SELECT语句太长的问题

有个项目需要自动拼接SQL语句,因为需要根据产品分列合计展现多列所以用到了循环拼接中间查询字段部分,如:trim(to_char(sum(casewhent.PRODUC... 有个项目需要自动拼接SQL语句,因为需要根据产品分列合计展现多列所以用到了循环拼接中间查询字段部分,如:
trim(to_char(sum(case
when t.PRODUCT_NAME = 'P000000005' then
t.profit
else
0
end),
'99999999.99')) as 产品1
产品数量大致在12个左右,拼接出来的SQL语句长度是在20000字符左右,用long变量承接,在执行SQL语句是,本地WINDOWS下安装的ORACLE 10G是可以执行的,但是服务起上的LINUX下安装的ORACLE 10G下执行此语句就会报 ORA-00972:identifier is too long
请问这个ORACLE问题可以通过数据库配置解决吗?如果可以应该如何配置?
感谢大家的回答,问题原因已经找到了,其实说来很简单,是字符集的问题。因为在UTF-8和GB1232中一个中文字符的长度是不一样的,一个是占2位,一个是占三位,我两个ORACLE数据库用了不同的字符集。而ORACLE的SQL语句中,AS的字段名必须小于30位,我的产品名称中有一个12中文字的,所以在UTF-8中12个中文就变成36个字符,超过了字段名30位的最大长度。而在GB1232中是24位的长度,可以执行。顺便给自己加分,呵呵。这么奇葩的问题也只有我自己能找到原因吧。
展开
 我来答
micro0369
2012-12-26 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4036万
展开全部
按理说,应该不是总长度的问题。

你再仔细检查一下sql语句,和 程序的执行过程。

参考:按照这个错误的原因和解决方案。

Error:
ORA-00972: identifier is too long

Cause:
You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters.

Action:
The options to resolve this Oracle error are:

Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. You must shorten the name to no more than 30 characters for these objects.
来自大金湖意志坚强的史黛拉
2012-12-26 · TA获得超过301个赞
知道小有建树答主
回答量:185
采纳率:100%
帮助的人:59.9万
展开全部
应该不是总长度的问题吧。我通常都用varchar2来存贮字符,可以存储32767。
但是要注意,有时候在系统的一些函数里varchar2只支持4000,但是它本身是可以存储32767的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c209zhang
2012-12-26 · TA获得超过1328个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:322万
展开全部
实在没办法就想办法缩短一下SQL语句吧!
比如说用
decode替换case when

to_char(decode(t.PRODUCT_NAME,'P000000005',t.profit,0)) as 产品1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
请叫我召哥
2012-12-26 · TA获得超过792个赞
知道小有建树答主
回答量:572
采纳率:95%
帮助的人:377万
展开全部
建议你仔细检查下SQL,看两边的是否一致,可以将SQL一段一段的放到long变量里面执行,看能否通过,一步一步排查原因。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jack_zhous
2012-12-26
知道答主
回答量:3
采纳率:0%
帮助的人:2.9万
展开全部
一步一步测试,可以打出来看看你拼接的sql语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式