调用的参数的数量或类型错误

时间:2013-06-03 04:01:04

标签: c# oracle plsql

我已成功创建了一个包。 但是当我尝试在我的C#程序上调用它时 我收到一个错误: 调用LOG_STATUS

时参数的数量或类型错误

LOG_STATUS是程序的名称:

CREATE OR REPLACE PACKAGE BODY ITMON.SERVERSTATUS AS  
PROCEDURE LOG_STATUS(out_RESULT OUT sys_refcursor)   
IS 
BEGIN
OPEN out_RESULT FOR
    SELECT HOSTNAME, USERS, PS_NAME 
    FROM PS_COLLECT
    WHERE NOT EXISTS
( 
        SELECT HOSTNAME, USERS, PS_NAME
        FROM PS_MASTER
        WHERE PS_MASTER.HOSTNAME = PS_COLLECT.HOSTNAME 
        AND PS_MASTER.USERS = PS_COLLECT.USERS 
        AND PS_MASTER.PS_NAME = PS_COLLECT.PS_NAME
    );
 END LOG_STATUS;  
END;

这是我的C#代码:

            OracleCommand OCom = new OracleCommand("SERVERSTATUS.LOG_STATUS", oc);
            OCom.CommandType = CommandType.StoredProcedure;

            OCom.Parameters.Add("out_RESULT", OracleType.VarChar, 30000).Direction = ParameterDirection.Output;

            OCom.Parameters[0].Value = sid;

            OracleDataAdapter _daGrid1 = new OracleDataAdapter(OCom);

            _daGrid1.Fill(_dsGrid);

1 个答案:

答案 0 :(得分:1)

我发现我的代码出了什么问题..

应该改变这一行:

OCom.Parameters.Add("out_RESULT", OracleType.VarChar, 30000).Direction = ParameterDirection.Output;

OCom.Parameters.Add("out_RESULT", OracleType.Cursor).Direction = ParameterDirection.Output;

应该使用Cursor而不是varchar ..