【发布时间】:2012-03-22 04:14:11
【问题描述】:
我有以下调用存储过程的 C# 代码,但没有返回数据(空/空数据集。)如果我在 TOAD 中运行存储过程,我肯定会得到结果(一行。)我可以更改命令文本到“SELECT * FROM DUAL”,我得到了返回的数据,所以我知道数据库正在成功连接。存储过程接受一个输入参数,并输出五个字段。这是我的代码:
string connStr = "Provider=OraOLEDB.Oracle;Data Source=database;User Id=username;Password=password;PLSQLRSet=1;";
OleDbConnection oracleConn = new OleDbConnection(connStr);
OleDbCommand cmd = new OleDbCommand("{call foo.bar(?, ?, ?, ?, ?, ?)}", oracleConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("p_login", OleDbType.VarChar, 50);
cmd.Parameters["p_login"].Direction = ParameterDirection.Input;
cmd.Parameters["p_login"].Value= "FOOBAR";
cmd.Parameters.Add("p_user_id", OleDbType.VarChar, 50);
cmd.Parameters["p_user_id"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("p_user_role", OleDbType.VarChar, 50);
cmd.Parameters["p_user_role"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("p_user_first_name", OleDbType.VarChar, 50);
cmd.Parameters["p_user_first_name"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("p_user_last_name", OleDbType.VarChar, 50);
cmd.Parameters["p_user_last_name"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("p_user_terr_nbr", OleDbType.VarChar, 50);
cmd.Parameters["p_user_terr_nbr"].Direction = ParameterDirection.Output;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "dsTest");
return ds;
【问题讨论】:
标签: c# oracle stored-procedures oledb