неправильное количество или типы аргументов в вызове

Я успешно создал пакет. Но когда я пытаюсь вызвать это в своей программе на 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;

Вот мой код С#:

            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);

person QKWS    schedule 03.06.2013    source источник
comment
Ошибка ясна, не могли бы вы поделиться своим кодом?   -  person Mzf    schedule 03.06.2013
comment
Интересно, как вы передаете тип sys_refcursor в свой код C#. Ошибка должна лежать там.   -  person hol    schedule 03.06.2013
comment
как тогда передать тип sys_refcursor? Я отредактировал свой пост и поделился частью кода.   -  person QKWS    schedule 03.06.2013
comment
НАШЕЛ. должно быть: OCom.Parameters.Add(out_RESULT, OracleType.Cursor).Direction = ParameterDirection.Output;   -  person QKWS    schedule 03.06.2013
comment
Очень интересно. Предложите вам опубликовать его самостоятельно в качестве ответа и принять его.   -  person hol    schedule 03.06.2013
comment
Что ты имеешь в виду @hol? Вы предлагаете мне опубликовать это?   -  person QKWS    schedule 03.06.2013
comment
Да, вряд ли кто-то с такой же / похожей проблемой в будущем будет просматривать эти комментарии, а скорее посмотрит на ответы.   -  person hol    schedule 03.06.2013
comment
@hol означает следующее: поскольку вы нашли ответ, вы должны опубликовать свое решение как ответ (ниже) на свой вопрос, а затем принять этот ответ. Это дает вам признание, которого вы заслуживаете за ответ на свой вопрос (о, и +1 к вопросу за то, что вы сделали именно это :-). Делитесь и наслаждайтесь.   -  person Bob Jarvis - Reinstate Monica    schedule 04.06.2013


Ответы (1)


Я узнал, что не так с моим кодом..

Следует изменить эту строку:

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

to

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

Следует использовать Cursor вместо varchar..

person QKWS    schedule 04.06.2013