c#调用oracle存储过程参数问题
我有一段调用oracle存储过程的c#代码,如下所示:
System.Data.OracleClient.OracleCommand CMD = new OracleCommand(fun_name, con);
CMD.Connection = con;
CMD.CommandType = System.Data.CommandType.StoredProcedure;
CMD.Parameters.Add(new OracleParameter());
CMD.Parameters[0].OracleType = OracleType.Number;
CMD.Parameters[0].Direction = ParameterDirection.Input;
//CMD.Parameters[0].ParameterName = "pi";
CMD.Parameters[0].Value = "2";
CMD.Parameters.Add(new OracleParameter());
CMD.Parameters[1].OracleType = OracleType.VarChar;
CMD.Parameters[1].Size = 20;
CMD.Parameters[1].Direction = ParameterDirection.Input;
//CMD.Parameters[1].ParameterName = "p2";
CMD.Parameters[1].Value = "xx";
CMD.ExecuteNonQuery();
其中有两行代码被注释了,运行时就会报错:参数个数或类型错误。
打开注释就没问题,可是我我又不想传递参数名称,如何处理呢?如果必须传递参数名称,在oracle中如何获取的存储过程的参数名称呢?多谢!
[解决办法]
SqlServer中
Create PROCEDURE [dbo].[AddFile]
@PortalId int,
@FileName nvarchar(100),
@Extension nvarchar(100),
@Size int,
@Width int,
@Height int,
@ContentType nvarchar(200),
@Folder nvarchar(200),
@FolderID int
AS
....
@PortalId这些就是参数名,Oracle中应该差不多吧。
[解决办法]
路过!!!!!!!!!!
[解决办法]
运行时就会报错:参数个数或类型错误。
你的写法是正确的,注意参数个数或类型。
或者你可以象下面这样写,一般来说不必把Parameter的属性都设上。
CMD.Parameters.Add(new OracleParameter("@pi", "2"));
[解决办法]