SET SERVEROUTPUT ON
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(64);
ref1 sys_refcursor;
BEGIN
ref1 := p_bs.f_getallStatus(sysdate-5,sysdate);
LOOP
FETCH ref1 INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN ref1%NOTFOUND;
dbms_output.put_line('n='||n||', msgstate='||TO_CHAR(msgstate)||', state='||state);
END LOOP;
CLOSE ref1;
END;
Oracle RefCursor и .Net OracleReader
Код:
На C # пишу:
Код:
using (OracleConnection conn = new OracleConnection("data source=usa;user id=qwerty;password=ytrewq"))
{
try
{
conn.Open();
OracleCommand cmd = new OracleCommand("p_bs.f_getallStatus", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@dateFrom", DateTime.Now.AddDays(-3)).Direction = ParameterDirection.Input;
cmd.Parameters.Add("@dateTo", DateTime.Now).Direction = ParameterDirection.Input;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
Console.WriteLine(string.Format("ID = {0}, Status = {1}", (string)dr["n"], (string)dr["msgstate"]));
}
catch (OracleException ex)
{
return;
}
finally
{
conn.Close();
}
}
{
try
{
conn.Open();
OracleCommand cmd = new OracleCommand("p_bs.f_getallStatus", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@dateFrom", DateTime.Now.AddDays(-3)).Direction = ParameterDirection.Input;
cmd.Parameters.Add("@dateTo", DateTime.Now).Direction = ParameterDirection.Input;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
Console.WriteLine(string.Format("ID = {0}, Status = {1}", (string)dr["n"], (string)dr["msgstate"]));
}
catch (OracleException ex)
{
return;
}
finally
{
conn.Close();
}
}
При выполнении выпадает Оракловская ошибка аля "p_bs.f_getallStatus не является хранимой процедурой, либо имя не зарегистрировано".
Что не так делаю, исходя из начального скрипта??
если это другая схема (овнер), может прав доступа нету?
а отличие идет в разнице создания коннекта в SQL Script и в программе.
Alias'ы используешь?
Цитата: grgdvo
p_bs - это что? Package? Owner?
...
...
Package.
Цитата: grgdvo
...
а отличие идет в разнице создания коннекта в SQL Script и в программе.
...
Как то размыто.. Цепляюсь-то к одному серверу.. Другие хранимые процедуры выполняю из кода без проблем. Проблемы именно с этой. Я так предполагаю, что проблемы именно с сущностями. Т.е., к примеру, данная конструкция Oracle не является хранимой процедурой. о_О
Цитата: grgdvo
Alias'ы используешь?
Про какие alias'ы идёт речь?? :
Цитата: tnsnames.ora
usa =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = asd.ru)(PORT = 2484))
(ADDRESS = (PROTOCOL = TCP)(HOST = asd.off.com)(PORT = 1521))
)
(SOURCE_ROUTE = yes)
(CONNECT_DATA =
(SERVICE_NAME = asd.off.com)
)
)