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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хранимые процедуры Oracle, вызываю function - как оформить out par 
:(
    Опции темы
romai
Дата 10.7.2005, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не знаю как оформить вызов функции Oracle? smile
PM MAIL   Вверх
Дрон
Дата 10.7.2005, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



romai
А если попробовать также как и в MSSQL?


--------------------
Да. Именно так.
PM   Вверх
Fyrklod
Дата 9.12.2007, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Дрон @  10.7.2005,  23:28 Найти цитируемый пост)
А если попробовать также как и в MSSQL?

т.е. ? 
не знаю как к примеру автор топика, НО я ниразу ничео не вызывал.. тупо делал запросы... а если можно запросы эти делать в процедурах или вьюхах, то сам заинтересовался как можно вызвать их в шарпе.. так что если можно  smile 
заранее спасибо
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
thomas
Дата 10.12.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Fyrklod, 
Вот пример вызова хранимой процедуры на сервере MS SQL 2005 из приложения C# 
Код

private static Factuur AddEntity(Factuur factuur)
        {
            int factuurnr = 0;
            using (SqlConnection con = new SqlConnection(Common.conStr)) // заюзаем соединение с БД
            { 
                string proc = "pr_Factuur_Add"; // имя хранимой процедуры в БД на сервере
                using (SqlCommand cmd = new SqlCommand(proc, con)) // заюзаем команду созданную на основании соединения и хранимой процедуры
                {
                    cmd.CommandType = CommandType.StoredProcedure; // скажем что тип команды это хранимая процедура
                    cmd.Parameters.AddWithValue("@datum", factuur.Datum); // присвоим значения параметрам хранимой процедуры
                    cmd.Parameters.AddWithValue("@klantnaam", factuur.Klantnaam);
                    cmd.Parameters.Add(new SqlParameter("@factuurnr", SqlDbType.Int)); // зададим параметр, который она должна вернуть
                    cmd.Parameters["@factuurnr"].Direction = ParameterDirection.Output;
                    con.Open(); // открыли соединение
                    cmd.ExecuteNonQuery(); // выполнили команду
                    factuurnr = Convert.ToInt32(cmd.Parameters["@factuurnr"].Value); // получили обратно присвоенный номер фактуры
                }
            }
            // --- получим сохраненную фактуру из БД
            factuur = GetEntity(factuurnr); // тут я вызываю функцию которая считывает из БД вставленную строку и присваивает значения полям класса, описывающего эту фактуру
            return factuur; // возврат экземпляра класса фактура
        }


А сама хранимая процедура выглядит так
Код

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[pr_Factuur_Add]
    @datum DATETIME,
    @klantnaam NVARCHAR(50),
    @factuurnr INT OUTPUT
AS
BEGIN
  SET @factuurnr = (SELECT ISNULL(MAX(factuurnr)+1,YEAR(GETDATE())*100000+1) FROM tblFactuur WHERE factuurnr > YEAR(GETDATE())*100000)
  INSERT INTO tblFactuur
    (
    factuurnr,
    datum,
    klantnaam
    )
    VALUES
    (
    @factuurnr,
    @datum,
    @klantnaam
    )
END

команда SET присваивает очередной номер фактуре по принципу YYYY00001 + 1, т.е. первые четыре цыфры это текущий год - 200700001, 200700002, 200700003 и так далее. Каждый год нумерация начинается с 1(200800001, 200800002, ... , 200900001, 200900002, ...)
OUTPUT указывает что хранимая процедура вернет значение номера фактуры в приложение её вызвавшее.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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