Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов функции 
:(
    Опции темы
damir83
Дата 28.1.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



есть прога,  БД Oracle, ИСР OracleForms
там функция в БД Oracle, возвращает число по определенным параметрам с формы
те там прямо пишешь:

переменная:= <имя функции>(параметры с формы)

как в C# ее вызвать? )
примерчик пж если можно


PM MAIL   Вверх
Unlocker
Дата 28.1.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: 1
Всего: 2



Непонятна суть проблемы. Если надо вызвать хранимую процедуру из БД, тогда надо ADO копать. А если копать ADO, то это в соседнюю ветку про БД.
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
antikom
Дата 28.1.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.11.2008

Репутация: нет
Всего: 1



Для того что бы вызвать процедуру и передать ей какой - либо параметр нужно сделать примерно следующиее:
Код

            System.Data.OracleClient.OracleConnection connection = new System.Data.OracleClient.OracleConnection();
            System.Data.OracleClient.OracleCommand command = new System.Data.OracleClient.OracleCommand();

            connection.ConnectionString = connectionString;
            connection.Open();
            command.CommandType = CommandType.StoredProcedure;
            command.Connection = connection;
            command.Parameters.AddWithValue("parameter Name", "Параметр с формы");
            command.ExecuteNonQuery();
            connection.Close();

PM MAIL WWW ICQ Skype YIM   Вверх
damir83
Дата 29.1.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



Спс, antikom за направление

пишу так

Код


      this.FormConnect = new OracleConnection (MainConnectionString);

 // Открыть коннект
        this.FormConnect.Open();

OracleCommand command = this.FormConnect.CreateCommand();
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "get_sum_prod";

        //параметры 
        OracleParameter ParamSub = new OracleParameter();
        ParamSub.DbType = DbType.Decimal;
            ParamSub.Value="203";
            ParamSub.ParameterName="a_sub";
            ParamSub.Direction = ParameterDirection.Input;
            command.Parameters.Add(ParamSub);
        OracleParameter ParamDatDdoc = new OracleParameter();
        ParamDatDdoc.DbType = DbType.Date;
            ParamDatDdoc.Value = "03.11.2007";
            ParamDatDdoc.ParameterName = "a_dat_v";
            ParamDatDdoc.Direction = ParameterDirection.Input;
            command.Parameters.Add(ParamDatDdoc);
        OracleParameter ParamDat = new OracleParameter();
        ParamDat.DbType = DbType.Date;
            ParamDat.Value = "29.01.2009";
            ParamDat.ParameterName = "a_dat_s";
            ParamDat.Direction = ParameterDirection.Input;
            command.Parameters.Add(ParamDat);

    
      
        MessageBox.Show(command.ExecuteScalar().ToString());

        // Закрыть коннект
        this.FormConnect.Close();



выдает ошибку (см рис)

Что не так?

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  3.jpg 68,85 Kb
PM MAIL   Вверх
damir83
Дата 29.1.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



get_sum_prod это функция у меня...

может в этом причина

я ведь указываю CommandType.StoredProcedure;


как указать что я это функция?
PM MAIL   Вверх
damir83
Дата 29.1.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.1.2009

Репутация: нет
Всего: нет



а селектом если тащить
работает

Код

 // Запросом вытащить функцию
        OracleCommand func = this.FormConnect.CreateCommand();
        func.CommandText = "select get_sum_prod(sub,'03.11.2007','28.01.2009') from Table"+
                            " where sub=203";
        // Выборка из функции
        OracleDataReader func_o = func.ExecuteReader();
        while (func_o.Read())
        {
            sum =Convert.ToInt32(func_o[0].ToString());

        }
        func_o.Close();

PM MAIL   Вверх
emmanuil
Дата 31.1.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



А если ты просто в оракле запустишь скрипт с get_sum_prod, что будет? Вернет результат?
С ораклом не знаком, но в Sql Server нужно указать например так - dbo.get_sum_prod().
Если функция скалярная, то возможно придется ее результат присвоить переменной, а потом выбрать из этой переменной. Например declare @var1 int @var1 = dbo.get_sum_prod() select @var1
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.