odbccommand调用带输出的存储过程是什么格式?----高人帮帮。

liumj2001 2011-08-30 11:48:04
OdbcDataReader dr; //存放变量的数据
Database db = new Database();
db.ODBCOpen(connstr);
OdbcParameter[] prams = {
db.oMakeInParam("@StrSql",OdbcType.VarChar,5000,sqlstr),
db.oMakeInParam("@PageIndex",OdbcType.Int,16,ipage ),
db.oMakeInParam("@PageCount",OdbcType.Int,16,20),
db.oMakeInParam("@SortClause",OdbcType.NText,5000,"MA001"),
db.oMakeInParam("@Filter",OdbcType.NText,5000,"MA001"),
db.oMakeOutParam("@TotalNum",OdbcType.Int,16)
};
db.RunProc("exec Common_Sp_Pagination @StrSql=?,@PageIndex=?,@PageCount=?,@SortClause=?,@Filter=?,OUTPUT", prams, out dr);


上面这句跑不通啊。

怎么调用?
...全文
267 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gemini Dean 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qingyun1029 的回复:]
参考一下:

C#调用Oracle存储过程
[/Quote]
学习一下这个调用方法,测试过可行,你不凡试试。希望早点成功!
liumj2001 2011-09-14
  • 打赏
  • 举报
回复
存储过程中也删除@TotalNum INT OUTPUT

我就没有办法得到总记录数了。
Gemini Dean 2011-09-14
  • 打赏
  • 举报
回复
存储过程中也删除@TotalNum INT OUTPUT --总记录条数
就不会出错吧,我估计是赋值有问题了

ParameterDirection.Input;
ParameterDirection.Output;
liumj2001 2011-09-14
  • 打赏
  • 举报
回复
这个存储过程返回一个记录集,同时还返回总的行数。
1 通用分页存储过程说明
1.1 存储过程名称:Common_Sp_Pagination
1.2 存储过程代码:

ALTER PROC [dbo].[Common_Sp_Pagination]
@StrSql VARCHAR(MAX) ,
@PageIndex INT ,--当前页码
@PageCount INT ,--每页条数
@SortClause VARCHAR(100) ,--排序字段,不加“Order by”
@Filter VARCHAR(200) , --条件,可以为空,不加where
@TotalNum INT OUTPUT --总记录条数
AS
DECLARE @ExeSql VARCHAR(MAX)
DECLARE @OrderByStr VARCHAR(100)
DECLARE @StartRowIndex INT
DECLARE @EndRowIndex INT
SET @StartRowIndex = ( @PageIndex - 1 ) * @PageCount + 1
SET @EndRowIndex = @PageIndex * @PageCount



/*--条件筛选--*/
IF @Filter IS NOT NULL
AND @Filter <> ''
BEGIN
SET @StrSql = @StrSql + ' WHERE ' + @Filter
END

/*--排序--*/
IF @SortClause IS NOT NULL
AND @SortClause <> ''
BEGIN
SET @OrderByStr = ' order by ' + @SortClause
SET @ExeSql = ' SELECT * FROM (' + @StrSql
+ ') AS A where rowIndex between ' + CAST(@StartRowIndex AS VARCHAR)
+ ' And ' + CAST(@EndRowIndex AS VARCHAR) + ' ' + @OrderByStr

END
ELSE
BEGIN
SET @ExeSql = ' SELECT * FROM (' + @StrSql
+ ') AS A where rowIndex between ' + CAST(@StartRowIndex AS VARCHAR)
+ ' And ' + CAST(@EndRowIndex AS VARCHAR) + ' '
END

PRINT @StrSql
PRINT @ExeSql
/*---查询总数-*/
CREATE TABLE #temp ( TotalNum INT )
DECLARE @InsertTemp VARCHAR(max)
SET @InsertTemp = 'insert into #temp select count(*) from (' + @StrSql
+ ') as A'
--PRINT @InsertTemp
EXEC(@InsertTemp)
SELECT @TotalNum = TotalNum
FROM #temp
DROP TABLE #temp

/*--查询分页信息--*/
EXEC(@ExeSql)
liumj2001 2011-09-14
  • 打赏
  • 举报
回复
public void RunProc(string procName, OdbcParameter[] prams, out OdbcDataReader dataReader)
{
OdbcCommand cmd = oCreateCommand(procName, prams);
dataReader = cmd.ExecuteReader();
//return (int)cmd.Parameters[5].Value;
}
jimh 2011-09-05
  • 打赏
  • 举报
回复
db.RunProc 里面是做什么的,把这个函数贴出来看看?
liumj2001 2011-09-05
  • 打赏
  • 举报
回复
我顶。
liumj2001 2011-08-30
  • 打赏
  • 举报
回复
删除输出变量后提示这个。

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]过程或函数 'Common_Sp_Pagination' 需要参数 '@TotalNum',但未提供该参数。
liumj2001 2011-08-30
  • 打赏
  • 举报
回复
db.RunProc(Common_Sp_Pagination);

这样也不行。

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]必须传递参数 6,并以 '@name = value' 的形式传递后续的参数。一旦使用了 '@name = value' 形式之后,所有后续的参数就必须以 '@name = value' 的形式传递
萧炎 2011-08-30
  • 打赏
  • 举报
回复
和sql一样的 LZ不妨看看sql的
qingYun1029 2011-08-30
  • 打赏
  • 举报
回复
什么错误?

贴出来看看。
qingYun1029 2011-08-30
  • 打赏
  • 举报
回复
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

111,132

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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