powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Возврат результата функции
6 сообщений из 6, страница 1 из 1
Возврат результата функции
    #35614226
Repz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, не разберусь не как как получить резултат функции из Oracle
(Select func(1) from dual не катит - так как внутри функции DML операции).

Кто может подсказать ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
private static int GetProjectID(OleDbConnection oleConnection, OleDbTransaction oleTransaction, ClientClass Client, int WorkerID)
        {
            int iResult = int.MinValue;

            string strSQL = @"
                                declare
                                    result1 number := null;
                                begin 
                                    result1 := DATAMART_PKG.GET_PROJECT_NAME ( 1, 2);
                                end;
                            ";

            OleDbCommand oleCommand = null;
            try
            {
                oleCommand = new OleDbCommand(strSQL, oleConnection); /* !!! НЕ РАБОТАЕТ !!!*/
                
                if (oleTransaction != null)
                {
                    oleCommand.Transaction = oleTransaction;
                }
                object obj = oleCommand.ExecuteNonQuery(); /*СЮДА БЫ РЕЗУЛЬТАТ ПОЛУЧИТЬ !!!*/
                
                int tmpProjectID;
                if ((obj != null) && (Int32.TryParse(obj.ToString(), out tmpProjectID) == true))
                {
                    /// случай заболевания был найден
                    iResult = tmpProjectID;
                }
                else
                {
                    /// случай заболевания не был найден ... надо его создать
                    ...
                    iResult = ...;
                }
            }
            catch (Exception exc)
            {
                iResult = int.MinValue;
            }

            return iResult; 
        }
...
Рейтинг: 0 / 0
Возврат результата функции
    #35614374
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для начала как минимум попробуй переделать команду SQL

Код: plaintext
1.
2.
3.
4.
5.
            string strSQL = @"
                                begin 
                                    [color=red]:[/color]result1 := DATAMART_PKG.GET_PROJECT_NAME ( 1, 2);
                                end;
                            ";

После этого у oleCommand должен появиться соответствующий OUT параметр, через который можно получить значение.
...
Рейтинг: 0 / 0
Возврат результата функции
    #35614378
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эх, не сумел воспользоваться форматированием :( идея в том, что необходимо объявить bind переменную, в которую будет возвращен результат - просто добавить двоеточие перед result1
...
Рейтинг: 0 / 0
Возврат результата функции
    #35614477
Repz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry E. Loginov,

Спасибо, разобрался ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
string strSQL = @"
                            begin
                                HOSPITAL_.DATAMART_PKG.GET_PROJECT_NAME ( ?, ?, ?);
                            end;
                            ";

....

OleDbCommand oleCommand = null;
            try
            {
                oleCommand = new OleDbCommand(strSQL, oleConnection);
                oleCommand.CommandType = CommandType.Text;

                OleDbParameter param1 = new OleDbParameter("var1", 1068257);
                oleCommand.Parameters.Add(param1);

                OleDbParameter param2 = new OleDbParameter("var2", 11636);
                oleCommand.Parameters.Add(param2);

                OleDbParameter param3 = new OleDbParameter("var3", 10);
                param3.Direction = ParameterDirection.InputOutput;
                oleCommand.Parameters.Add(param3);

                if (oleTransaction != null)
                {
                    oleCommand.Transaction = oleTransaction;
                }
                oleCommand.ExecuteNonQuery();
                
                object obj = null;
                if (oleCommand.Parameters != null && oleCommand.Parameters["var3"] != null)
                {
                    obj = oleCommand.Parameters["var3"].Value;

                    if (obj == null || int.TryParse(obj.ToString(), out iResult) == false)
                    {
                        throw new Exception("Ошибка при создании записи!!!");
                    }
                }
                else
                {
                    throw new Exception("Ошибка при создании записи!!!");
                }
                /// iResult = int.MinValue;
                
            }




...
Рейтинг: 0 / 0
Возврат результата функции
    #35614495
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
begin
  HOSPITAL_.DATAMART_PKG.GET_PROJECT_NAME ( ?, ?, ?);
end;
так это вообще оказалась хронь с OUT параметром, а не функция?
...
Рейтинг: 0 / 0
Возврат результата функции
    #35616534
Repz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, сделал на "хрень" с выходным параметром ...
так как в функцией все еще не ясно как параметры получать ...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Возврат результата функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]