NET中的oracle包内调用函数时

NET中的oracle包内调用函数时

本文介绍了ORA-06550:在ASP.NET中的oracle包内调用函数时,错误的数字或参数类型错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Oracle 10g数据库中的一个名为TEST的oracle程序包中有一个函数

I have a function inside an oracle package called TEST in an Oracle 10g database

FUNCTION GetEname(P_ename IN VARCHAR2) RETURN VARCHAR2 AS
retVal VARCHAR2(10);
BEGIN
retVal := SUBSTR(P_ename, 3, INSTR(P_ename, ':', 1, 2) - 3);

RETURN RetVal;

END GetEntDefIEIDFromEname;

我已经创建了一个ASP.net页面,并且在page_load中有以下代码:

I have created an ASP.net page and I have the following code in the page_load:

String strResult = "";
        try
        {
            oracleConn.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDatabase"].ConnectionString;
            oracleConn.Open();
            OracleCommand orclCmnd = new OracleCommand();
            orclCmnd.Connection = oracleConn;
            orclCmnd.CommandText = "TEST.GetEname";
            orclCmnd.CommandType = CommandType.StoredProcedure;

            OracleParameter ename = new OracleParameter();
            ename.ParameterName = "ename";
            ename.OracleType = OracleType.VarChar;
            ename.Direction = ParameterDirection.Input;
            ename.Value = "0:490330";
            orclCmnd.Parameters.Add(ename);

            strResult = (String)orclCmnd.ExecuteOracleScalar();

            oracleConn.Close();
            oracleConn.Dispose();

            lbl1.Text = "Result of  " + strResult;
        }
        catch (Exception ex)
        {
            Console.Out.WriteLine(ex.ToString());
            oracleConn.Close();
        }

运行代码时,出现以下错误消息:

When I run the code I get the following error message:

推荐答案

您在代码中使用了其他名称作为参数.尝试更改

You're using a different name for the parameter in your code. Try changing

ename.ParameterName = "ename";

ename.ParameterName = "P_ename";

ALSO

您需要为输出值添加一个参数:

You need to add a parameter for the output value:

OracleParameter result = new OracleParameter();
result.OracleType = OracleType.VarChar;
result.Direction = ParameterDirection.ReturnValue;
orclCmnd.Parameters.Add(result);

使用ExecuteNonQuery调用函数后,从参数中获取值:

And get the value from the parameter after calling the function with ExecuteNonQuery:

orclCmnd.ExecuteNonQuery();
strResult = result.Value.ToString();

这篇关于ORA-06550:在ASP.NET中的oracle包内调用函数时,错误的数字或参数类型错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 22:11