Yeniden imleci döndüren Oracle saklı yordamını aramaya çalışıyorum ve bu döndürülen verilerden ağaç görünümü oluşturmam gerekiyor. Bu konuda yeniyim ve iki problemim var.Yeniden imleci döndüren Oracle saklı yordamı nasıl çağırılır
İlk sorun ben bu yordamı çağırmak mümkün değilim olmasıdır. Bu hatayı alıyorum: "'OBJECT_HIERARCHY'"
'a yapılan çağrıda yanlış numara veya türde bağımsız değişkenler ve ikinci sorunum, bu yordamın bir ref imleç değeri döndürdüğünde bu verileri nasıl alacağımı anlamadığım ? Orada o tabloda daha sonra 5000 kayıtlarıdır ve ben bu verileri, ancak bir ref imleç değerinin almıyorum. Birisi lütfen bu verileri nasıl imleç değeriyle alabileceğimi açıklayabilir. Oracle ile hiç tecrübem yok.
Bu
prosedür oracle tanımı şöyledir: Bu tablo alanı tanımları vardırCREATE 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)
ve bu hata döndürür benim kodudur:
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();
}
birisi Can bana yardım ve bu hatayı dönen kodum neden bana açıklayabilir: bağımsız değişken "yanlış numara veya türlerini de Eğer OUT
sağlamak gidiyoruz 'OBJECT_HIERARCHY'"
Son olarak, çalıştı. Teşekkür ederim. Ben bunu sorunuzda okuyordu, ben senin yazılan bu düzenlemeyi geri alındı ettik kodu – user2718165
düzeltmek için ilk yazı düzenlenebilir ve neyin yanlış olduğunu çözemedim. Sorunu olduğu zaman olduğu gibi bırak. – krillgar