社区
C#
帖子详情
急:使用OracleClient调用存储过程异常:错误参数数量和类型
eeff
2003-09-14 10:10:32
如果换用Oledb驱动,程序就正确,但是用OracleClient就出现这样的错误,为什么啊
...全文
189
7
打赏
收藏
急:使用OracleClient调用存储过程异常:错误参数数量和类型
如果换用Oledb驱动,程序就正确,但是用OracleClient就出现这样的错误,为什么啊
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eeff
2003-09-14
打赏
举报
回复
好消息,好像可以了,非常感谢,没想到这个也要对应,晕了!
非常感谢。
saucer
2003-09-14
打赏
举报
回复
have you tried?
oPara[0].ParameterName="as_table_code";
....
oPara[1].ParameterName="as_row_id";
eeff
2003-09-14
打赏
举报
回复
我得Oracle版本是 8.1.6.0.0 会不会有影响啊
eeff
2003-09-14
打赏
举报
回复
真不好意思,那个冒号我是看别的地方要加什么冒号我就加上,本来没有的,没有也不对,刚才我有试了一下,用MSDAORA.1还是成功(没有冒号的)。我想应该是通用的。
我担心的DbType不对,但又似乎不可能,ProgName是不是要用getrowid(:sTableCode,:sRowId),但我试了还不对,按理来说,我用的都是Ixxx接口来访问,对象类具体的实例是对应的派生类(OracleClient),不会错的,最让我不解的是换用Oledb驱动,用OleDb控件的类就正确。可是一样的代码啊
saucer
2003-09-14
打赏
举报
回复
try to remove ":" from the parameter name and make sure the parameter name matches what is in the sp
eeff
2003-09-14
打赏
举报
回复
下面的代码但是用OracleClient时就说这样的错误
+ System.SystemException {"ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'GETROWID' 时参数数量或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
"} System.SystemException
你应该遇到过,帮忙看看是怎么回事?谢谢。下面是代码。到底那一个地方有误啊
/// < summary>
/// 根据传入的表的代码,返回新的行号
/// < /summary>
/// < param name="sTypeCode"> 要取行号的表代码< /param>
/// < returns> 返回的指定表的新行号< /returns>
public string GetRowID(string sTableCode)
{
string sRowId = "";
try
{
IDbDataParameter[] oPara =this.NewDBDataParameter(2);//申请空间及赋予对应类型的参数对象
oPara[0].ParameterName=":sTableCode";
oPara[0].DbType=DbType.AnsiString;
//oPara[0].DbType=OracleType.VarChar
oPara[0].Value = sTableCode;
oPara[0].Direction=ParameterDirection.Input;
oPara[1].ParameterName=":sRowId";
oPara[1].DbType=DbType.AnsiString;
oPara[1].Direction = ParameterDirection.Output;
oPara[1].Size=32;
IDataParameterCollection oParaCollection = ExecuteSpPara("getrowid",oPara);
sRowId = ((IDataParameter)oParaCollection["sRowId"]).Value.ToString();
}
catch(Exception e)
{
Log.WriteLog("System","GetRowID" ,"取表[" + sTableCode + "]的记录行号出错!出错信息是:" + e.ToString());
sRowId = "";
}
return(sRowId);
}
/// < summary>
/// 执行一个存储过程,并返回相应的参数集合
/// < /summary>
/// < param name="sProcName"> 存储过程名称< /param>
/// < param name="oInPara"> 存储过程传入参数< /param>
/// < returns> 存储过程返回参数集合< /returns>
public IDataParameterCollection ExecuteSpPara(string sProcName,IDbDataParameter[] oInPara)
{
IDbCommand IDbCmd=this.NewDBCommand();
IDbConnection IDbConn=null;
if(this.LongDbConn==null)
{//如果存在长连接,则使用长连接,否则根据连接参数建立新的连接。
IDbConn=NewDBConnection();
IDbConn.Open();
}
else
{
IDbConn=this.LongDbConn;
}
IDbCmd.CommandType=CommandType.StoredProcedure;
IDbCmd.CommandText=sProcName;
IDbCmd.Connection=IDbConn;
for(int i=0; i< oInPara.Length;i++)
{
IDbCmd.Parameters.Add(oInPara[i]);
}
try
{
IDbCmd.ExecuteNonQuery();
}
catch(System.Data.OracleClient.OracleException oe)
{
Log.WriteLog("System",this.ToString(),oe.ToString());
}
catch(Exception e)
{
Log.WriteLog("System",this.ToString(),e.Message);
}
if(IDbConn!=null && ! IDbConn.Equals(this.LongDbConn) && IDbConn.State==ConnectionState.Open)
{
IDbConn.Close();
}
return IDbCmd.Parameters;
}
create or replace procedure getrowid(as_table_code IN VARCHAR2,as_row_id OUT VARCHAR2) IS
ld_value NUMBER;
ld_year number(4);
ld_month number(2);
ld_day number(2);
ls_code_param varchar2(2);
BEGIN
saucer
2003-09-14
打赏
举报
回复
你最好还是把你的编码贴出来,注意ORACLE要用
SELECT * FROM Customers WHERE CustomerID = :pCustomerID
myDataAdapter.SelectCommand.Parameters.Add("pCustomerID", OracleType.VarChar, 80).Value = "Smith";
160. Java
调用
存储过程
存储过程
是预编译的SQL语句集合,存储在数据库中,通过名称
调用
执行。它具有预编译、模块化和安全控制等特点,适用于高频复杂操作、事务密集型任务和数据权限隔离...
使用
时需注意
参数
类型
匹配、资源释放和SQL注入防护。
Oracle
数据库操作简易指南:
使用
Oracle
Helper.cs与System.Data.
Oracle
Client
.dll
简介:在.NET框架的ASP.NET环境中,"
Oracle
Helper.cs"和"System.Data.
Oracle
Client
.dll..."
Oracle
Helper.cs"提供了一个封装了常用数据库操作方法的类,如执行SQL查询和
存储过程
。"System.Data.
Oracle
Client
.d...
Oracle
-
存储过程
与函数_
oracle
存储过程
中
使用
数学函数
begin程序语句序列
异常
处理语句序列end 过程名execute 过程名 [
参数
序列]drop procdure 过程名begininsert into student values;commit;dbms_output.put_line;end;isbegindbms_output.put_line;
浅谈 MySQL
存储过程
与函数
存储过程
和 存储函数说实话本人工作中不经常
使用
,康师傅也说 阿里开发准则 不建议
使用
存储过程
/函数… 但这并不是咱不会的理由 很久以前学习过,也听说了,
存储过程
是mysql5.0新增的 大致就像编程语言的 方法/...
02-PostgreSQL
存储过程
的进阶介绍(含游标、
错误
处理、自定义函数、事务)
PostgreSQL
存储过程
进阶介绍,游标、
错误
处理、自定义函数、事务。
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章