【发布时间】:2015-03-05 05:16:44
【问题描述】:
我是使用 C# 语言开发 Web 应用程序的初学者,但在运行 ASP.NET 代码时遇到了问题。我在 TOAD FOR ORACLE 中编写了一个程序,它创建成功。
CREATE OR REPLACE PROCEDURE GENERALAPPLICATION.LE_SELECT_EMPLOYEE
(EMPID IN OUT INTEGER, F_NAME OUT VARCHAR, L_NAME OUT VARCHAR,
PHO OUT INTEGER, ADRS OUT VARCHAR)
IS
BEGIN
SELECT
FNAME, LNAME, PHONE, ADDRESS
INTO
F_NAME, L_NAME, PHO, ADRS
FROM
LE_EMPLOYEE
WHERE
EID = EMPID;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END LE_SELECT_EMPLOYEE;
/
现在我想在使用 C# 的 Web 应用程序表单中使用它,所以我在按钮单击处理程序方法中编写了这段代码:
protected void Button4_Click(object sender, EventArgs e)
{
int EID = int.Parse(EIDBox.Text);
string oradb = "Data Source=*****;User ID=*****;Password=*****;Unicode=True";
OracleConnection conn = new OracleConnection(oradb);
conn.Open();
OracleCommand cmd = new OracleCommand("LE_SELECT_EMPLOYEE", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("EMPID", OracleType.VarChar, 20, ParameterDirection.InputOutput.ToString()).Value = EID;
cmd.Parameters.Add("F_NAME", OracleType.VarChar, 20, ParameterDirection.Output.ToString());
cmd.Parameters.Add("L_NAME", OracleType.VarChar, 20, ParameterDirection.Output.ToString());
cmd.Parameters.Add("PHO", OracleType.VarChar, 20, ParameterDirection.Output.ToString());
cmd.Parameters.Add("ADRS", OracleType.VarChar, 20, ParameterDirection.Output.ToString());
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
DataTable DT = new DataTable();
DT.Load(dr);
GridView1.DataSource = DT;
GridView1.DataBind();
}
但我在线路上遇到错误
OracleDataReader dr = cmd.ExecuteReader();
说调用的参数类型有误。
System.Data.OracleClient.dll 中出现“System.Data.OracleClient.OracleException”类型的异常,但未在用户代码中处理
附加信息:ORA-06550:第 1 行,第 7 列:
PLS-00306:在调用“错误”时参数的数量或类型错误。
您能帮我找出导致此问题的原因吗?谢谢。
【问题讨论】:
-
PHO OUT INTEGER,您传递了“PHO”,OracleType.VarChar,请将其更改为整数。
-
哦,是的,我现在将其更改为“ cmd.Parameters.Add("PHO", OracleType.Number, (int)ParameterDirection.Output).ToString(); ”,但我还是一样错误
-
{"ORA-06550:第 1 行,第 7 列:\nPLS-00306:调用“LE_SELECT_EMPLOYEE”时参数的数量或类型错误\nORA-06550:第 1 行,第 7 列:\nPL /SQL: 语句被忽略\n"}
-
EMPID 也是整数,并且您传递了 varchar。错误区域参数名称可能拼写错误,参数可能具有错误的数据类型,声明可能错误,或者声明可能在块结构中放置不正确。
-
我使用 int EID = int.Parse(EIDBox.Text); 解析它@SainPradeep
标签: c# asp.net database oracle visual-studio