调用oracle存储过程,出现PLS-00201: 必须说明标识符 'GUEST_GETPAGE_ONE.SP_PAGE',怎么处理?

aiq 2007-09-24 11:10:49
GUEST_GETPAGE_ONE.SP_PAGE oracle中包里的存储过程,在pl/sql中可以执行
下面是调用的(pl/sql和asp.net中用的同一个用户)

OracleConnection cn = new OracleConnection(ConfigurationManager.ConnectionStrings["jspolice"].ConnectionString);
cn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = "guest_getpage_one.sp_page";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("p_pagesize", OracleType.Number);
cmd.Parameters["p_pagesize"].Direction = ParameterDirection.Input;
cmd.Parameters["p_pagesize"].Value = 10;

cmd.Parameters.Add("p_pageno", OracleType.Number);
cmd.Parameters["p_pageno"].Direction = ParameterDirection.Input;
cmd.Parameters["p_pageno"].Value = 1;

cmd.Parameters.Add("p_sqlselect", OracleType.VarChar, 200);
cmd.Parameters["p_sqlselect"].Direction = ParameterDirection.Input;
cmd.Parameters["p_sqlselect"].Value = "select * from hn_guest";

cmd.Parameters.Add("p_sqlcount", OracleType.VarChar, 200);
cmd.Parameters["p_sqlcount"].Direction = ParameterDirection.Input;
cmd.Parameters["p_sqlcount"].Value = "select * from hn_guest";

cmd.Parameters.Add("p_outrecordcount", OracleType.Float);
cmd.Parameters["p_outrecordcount"].Direction = ParameterDirection.Output;

cmd.Parameters.Add("p_pagecoun", OracleType.Float);
cmd.Parameters["p_pagecoun"].Direction = ParameterDirection.Output;

cmd.Parameters.Add("p_outcursor", OracleType.Cursor);
cmd.Parameters["p_outcursor"].Direction = ParameterDirection.Output;

DataSet Ds = new DataSet();
OracleDataAdapter ada = new OracleDataAdapter(cmd);
ada.Fill(Ds,"temp");
cn.Close();
...全文
617 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiq 2007-09-24
  • 打赏
  • 举报
回复
create or replace package Guest_GetPage_One
is
type ResultData is ref cursor;
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int, --返回总记录数
p_PageCount out int,--返回总记录数
p_OutCursor out ResultData);
end Guest_GetPage_One;
/
create or replace package body Guest_GetPage_One
is
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int, --返回总记录数
p_PageCount out int,--返回总记录数
p_OutCursor out ResultData)
as
v_sql varchar2(3000);
v_count int;
v_heiRownum int;
v_lowRownum int;
begin
------------------------------------------------------------取分页总数,取记录总数
--v_sql := 'select count(*) from (' || p_SqlSelect || ')';
if (p_SqlCount is null) then
p_OutRecordCount :=0 ;
p_PageCount := 0 ;
end if;
execute immediate p_SqlCount into v_count;
p_OutRecordCount :=v_count;
p_PageCount := ceil(v_count/p_PageSize);
end if;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize +1;
-- v_sql := 'select * from (' || Psql || ') where rownum between ' || v_Plow || ' and ' || v_Phei ;

v_sql:= 'select * from (select rownum rnm, a.* from ('||p_SqlSelect ||') a where rownum <='|| v_heiRownum||' ) where rnm >='|| v_lowRownum ;


OPEN p_OutCursor FOR v_sql;

end sp_Page;
end Guest_GetPage_One;


网上的,我在test窗口中测试可以用的吗
vlysses 2007-09-24
  • 打赏
  • 举报
回复
参数SP_PAGE在存储过程中未被说明,仔细查一下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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