Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 oracle и временные таблицы  [new]
senalex
Member

Откуда:
Сообщений: 21
есть временная таблица и хранимая процедура для заполнения таблицы.
создаю command и вызываю процедуру, после datareader'ом пытаюсь вывести данные, но в таблице ничего нет.
для проверки работоспасобности процедуры выполняю ее в toad'е и выбираю данные, все нормально.
В чем может быть дело?
24 мар 09, 14:44    [6968610]     Ответить | Цитировать Сообщить модератору
 Re: oracle и временные таблицы  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
В Oracle есть 2 типа временных таблиц: которые хранят данные до завершения транзакции и которые хранят данные до завершения сессии. Как минимум, надо выяснить, какая используется в данном случае
24 мар 09, 15:57    [6969352]     Ответить | Цитировать Сообщить модератору
 Re: oracle и временные таблицы  [new]
senalex
Member

Откуда:
Сообщений: 21
таблица хранит данные до завершения транзакции.

для проверки попробывал по работать с временной таблицей, данные которой хранятся до завершения сессии, с такой таблицей все прекрасно работет.

Но мне нужно использовать таблицу первого типа, так как задача стоит перенести функционал рабочей программы на платформу net, не изменяя ни одной хранимой процедуры и таблицы базы, т.к. эти процедуры и таблицы еще вызываются и в др. программах.
24 мар 09, 19:42    [6970851]     Ответить | Цитировать Сообщить модератору
 Re: oracle и временные таблицы  [new]
senalex
Member

Откуда:
Сообщений: 21
Вот код:

код

OracleCommand com = Connect.CreateCommand();
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "fill_role_privs";
OracleParameter par1 = new OracleParameter("a_grantee", OracleDbType.Varchar2, 30);
par1.Value = "user_name";
com.Parameters.Add(par1);
OracleParameter par2 = new OracleParameter("a_granted_role", OracleDbType.Varchar2, 30);
par2.Value = "%";
com.Parameters.Add(par2);
OracleParameter par3 = new OracleParameter("a_gal", OracleDbType.Decimal);
par3.Value = 1;
com.Parameters.Add(par3);
com.ExecuteNonQuery();
com.CommandType=Text;
com.CommandText="select * from sg_user_privs";
OracleDataReader dr=com.ExecuteReader();
while(dr.Read())
{
......
}
dr.Close();
25 мар 09, 06:23    [6971501]     Ответить | Цитировать Сообщить модератору
 Re: oracle и временные таблицы  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Поскольку потом ты не можешь прочитать данные, значит скорее всего где-то вызывается AUTOCOMMIT - болезнь всякого рода клиентских прибамбасов...
25 мар 09, 10:26    [6972037]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить