[C#] Работа с БД

geja_03

Есть соединение с БД. Нужно выполнить хранимую в Бд процедуру (выходной параметр типа "DataSet") и поместить значение этого параметра в стандартный DataSet. Как?

xz_post

When you set the CommandType to StoredProcedure, you should set the CommandText property to the name of the stored procedure. The command executes this stored procedure when you call one of the Execute methods.
msdn (С) 2005

geja_03

Короче есть такoй код:
SqlConnection conn = new SqlConnection("...");
SqlCommand cmd = new SqlCommand ("my_stored_proc", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParametr par = cmd.parametrs.Add("@value", SqlDbType.Int]);
par.Direction = ParameterDirection.Output;
cmd.ExecutionNonQuery;
int rez = (int) par.Value;
Что мне надо изменить в этом коде, чтобы выходной параметр стал DataSet? (Естественно, rez я объявлю как DataSet )

xz_post

надо заглянуть в мсдн
DataAdapter.Fill

xz_post

в ms sql для получения на выз\ходе рекордсета/датасета не нужно создавать out-параметры

geja_03

На самом деле БД Oracle . Если я соединяюсь с БД через DataAdapter, то как мне привязать сюда мою хранимую процедуру?

xz_post

ну тогда надо задать параметр ref cursor

geja_03

ref cursor это тип в oracle! А в написанном коде мне что поменять?

xz_post

например для процы
procedure GetIRFList( pcr_List out sys_refcursor,
..................
)
is
begin
open pcr_List for
select IRF_ID, .... лалала
нужно добавить параметр с типом OracleType.Cursor и вызвать OracleDataAdapter.Fill.
OracleCommand)command).Parameters.Add("pcr_List", OracleType.Cursor).Direction = ParameterDirection.Output;
Кстати у тебя оракловый провайдер какой ?

Alena_08_11

Для mssql это наверно было бы так:
DataSet ds = new DataSet;
SqlDataAdapter da = new SqlDataAdapter("exec Proc_Name",sql_conn);
da.Fill(ds);
мб для Oracle как нить так же ? :-)
Оставить комментарий
Имя или ник:
Комментарий: