求高手指点存储过程ORA-01460: 转换请求无法实现或不合理怎么办

CAINIAOXIANGFEI 2011-05-09 05:09:15
我有个存储过程如下
Procedure proc_page(
p_curpage Number,
p_pagesize Number,
p_select varchar2,
p_rowcount out Number,
p_pagecount out number,
p_cursor out cursor_page
)
is

v_count_sql varchar2(2000);
v_select_sql varchar2(2000);
begin
--查询总条数
v_count_sql:='select count(*) from '||'('||p_select||')';

--执行查询,查询总条数
execute immediate v_count_sql into p_rowcount;
........
end
这个存储过程主要是实现一个分页的功能,目前的问题是参数p_select的长度过长p_select是一个查询语句
execute immediate v_count_sql into p_rowcount;
请问这个该怎么解决
...全文
272 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CAINIAOXIANGFEI 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sxdtgsh 的回复:]
楼主可以精简一下P_select,一般4000够用了。如果不行就换一种方法
使用DBMS_SQL
p_select 可以定义成 dbms_Sql.varchar2a,最大长度可以是32767。
具体的使用方法,楼主可以看一下dbms_sql的帮助。
[/Quote]
能不能给个简单的例子 就是参数定义是怎么定义的 把我的存储过程改下该是什么样子的?
sxdtgsh 2011-05-09
  • 打赏
  • 举报
回复
楼主可以精简一下P_select,一般4000够用了。如果不行就换一种方法
使用DBMS_SQL
p_select 可以定义成 dbms_Sql.varchar2a,最大长度可以是32767。
具体的使用方法,楼主可以看一下dbms_sql的帮助。
hanzs 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bobo12082119 的回复:]

--没见过这样的语句
execute immediate v_count_sql into p_row……
[/Quote]

这个语句肯定没问题的,我以前也用过

还有你的输入参数p_select要确保里面没有多余的空格、换行什么的,有最好要去掉。
304的的哥 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bobo12082119 的回复:]
--没见过这样的语句
execute immediate v_count_sql into p_rowcou……
[/Quote]
--看来是孤陋寡闻了

execute immediate into 语句的性能问题
304的的哥 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 cainiaoxiangfei 的回复:]
这个存储过程主要是实现一个分页的功能,目前的问题是参数p_select的长度过长p_select是一个查询语句
execute immediate v_count_sql into p_rowcount;
[/Quote]

--没见过这样的语句
execute immediate v_count_sql into p_rowcount;
hanzs 2011-05-09
  • 打赏
  • 举报
回复

v_count_sql varchar2(2000);
v_select_sql varchar2(2000);

varchar2可以设置4000的,如果4000还不够长,那就看你的查询语句是否合理了,一般的应该不会有那么长的查询语句的
304的的哥 2011-05-09
  • 打赏
  • 举报
回复

ORA-01460 unimplemented or unreasonable conversion requested

Cause: The requested format conversion is not supported.

Action: Remove the requested conversion from the SQL statement.
Check the syntax for the TO_CHAR, TO_DATE, and TO_NUMBER functions to see which
conversions are supported.

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧