грешен номер или типове аргументи в извикването на

Създадох пакет успешно. Но когато се опитам да извикам това в моята 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);

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