Как вызвать хранимую процедуру Oracle, которая возвращает курсор ref

Я пытаюсь вызвать хранимую процедуру Oracle, которая возвращает курсор ref, и мне нужно создать представление дерева из этих возвращенных данных. Я новичок в этом, и у меня есть две проблемы.

Первая проблема в том, что я не могу вызвать эту процедуру. Я получаю эту ошибку: «неверный номер или типы аргументов при вызове OBJECT_HIERARCHY»

И моя вторая проблема заключается в том, что я не понимаю, как я получу эти данные, когда эта процедура возвращает значение курсора ref? В этой таблице более 5000 записей, и я получаю не эти данные, а значение курсора ref. Может кто-нибудь, пожалуйста, объясните, как я могу получить эти данные со значением ref курсор. У меня нет опыта работы с Oracle.

Это определение процедуры в Oracle:

CREATE OR REPLACE PROCEDURE SAD.object_hierarchy  
(nAppId IN NUMBER,
nParentId IN NUMBER DEFAULT -1, 
o_cRefCursor OUT SYS_REFCURSOR)
IS
BEGIN
IF NOT o_cRefCursor%ISOPEN THEN

  OPEN o_cRefCursor FOR 
     SELECT
        h.PARENT_ID, h.CHILD_ID, h.H_LEVEL,
        o.OBJECT_IDENTIFIER, o.OBJECT_TYPE_ID
     FROM
     (
        SELECT
           PARENT_ID, CHILD_ID, LEVEL AS H_LEVEL
        FROM OBJECT_RELATIONSHIPS
        START WITH PARENT_ID = nParentId --> -1 --= 60170
        CONNECT BY PRIOR CHILD_ID = PARENT_ID
     ) h
     INNER JOIN
        OBJECTS o
        ON
           o.OBJECT_ID = h.CHILD_ID AND
           O.APPLICATION_ID = nAppId;   
 END IF;
END object_hierarchy;

это определения полей таблицы

Column Name               Data Type            

 OBJECT_REL_ID            NUMBER (14)                    
 PARENT_ID                NUMBER (14)                    
 CHILD_ID                 NUMBER (14)                    
 OBJECT_IDENTIFIER        VARCHAR2 (255 Byte)    
 OBJECT_TYPE_ID           VARCHAR2 (5 Byte)

и это мой код, который возвращает ошибку:

            string oradb = "Data Source=(DESCRIPTION="
         + "(ADDRESS=(PROTOCOL=TCP)(HOST=tnt33)(PORT=1521))"
         + "(CONNECT_DATA=(SERVICE_NAME=ORCL)));"
         + "User Id=xxx;Password=xxxxx;";
        OracleConnection con = new OracleConnection(oradb);

        try
        {
            con.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.CommandText = "SAD.object_hierarchy";
            cmd.Parameters.Add("nAppId", OracleDbType.Int16).Value = 1;
            OracleParameter oraP = new OracleParameter();
            oraP.OracleDbType = OracleDbType.RefCursor;
            oraP.Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.Add(oraP);
            OracleDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {

            }
            reader.Close();    
        }
        catch (Exception ex)
        {

            con.Close();
        }

Может кто-нибудь, пожалуйста, помогите мне и объясните мне, почему мой код возвращает эту ошибку: «неправильный номер или типы аргументов при вызове OBJECT_HIERARCHY»

Ответы на вопрос(2)

Ваш ответ на вопрос