powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопрос по stored procedure в OracleDataAdapter.UpdateCommand
2 сообщений из 2, страница 1 из 1
Вопрос по stored procedure в OracleDataAdapter.UpdateCommand
    #37614051
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, вопрос

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
                oracleDataAdapter.UpdateCommand = new Oracle.DataAccess.Client.OracleCommand("pkg_emp.update_emp (:EMPNO, :ENAME)", oracleConnection);
                oracleDataAdapter.UpdateCommand.Parameters.Add(new OracleParameter("EMPNO", OracleDbType.Int16, 10, "EMPNO"));
                oracleDataAdapter.UpdateCommand.Parameters.Add(new OracleParameter("ENAME", OracleDbType.Varchar2, 30, "ENAME"));

                oracleDataAdapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
...
...
oracleDataAdapter.Update(dataSet);



генерирует код (видимо в соотв. с настройками UpdateBatchSize). Как в подобный случаях поступать, ставить UpdateBatchSize = 1?
(предполагается что изменений не много, думаю, что в других случаях надо использовать array?)

Код: plsql
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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
DECLARE
   TYPE tec IS TABLE OF NUMBER
                  INDEX BY BINARY_INTEGER;

   TYPE trmd IS TABLE OF NUMBER
                   INDEX BY BINARY_INTEGER;

   TYPE tem IS TABLE OF VARCHAR2 (256)
                  INDEX BY BINARY_INTEGER;

   rct    NUMBER := 0;
   rmd    NUMBER := 0;
   aecd   tec;
   armd   trmd;
   aem    tem;
BEGIN
   BEGIN
      rct := rct + 1;
      pkg_emp.update_emp (:C0, :C1);
      armd (rct) := SQL%ROWCOUNT;
      rmd := rmd + SQL%ROWCOUNT;
      aecd (rct) := 0;
   EXCEPTION
      WHEN OTHERS
      THEN
         armd (rct) := 0;
         aecd (rct) := SQLCODE;
         aem (rct) := SQLERRM;
   END;

   BEGIN
      rct := rct + 1;
      pkg_emp.update_emp (:C2, :C3);
      armd (rct) := SQL%ROWCOUNT;
      rmd := rmd + SQL%ROWCOUNT;
      aecd (rct) := 0;
   EXCEPTION
      WHEN OTHERS
      THEN
         armd (rct) := 0;
         aecd (rct) := SQLCODE;
         aem (rct) := SQLERRM;
   END;

   BEGIN
      rct := rct + 1;
      pkg_emp.update_emp (:C4, :C5);
      armd (rct) := SQL%ROWCOUNT;
      rmd := rmd + SQL%ROWCOUNT;
      aecd (rct) := 0;
   EXCEPTION
      WHEN OTHERS
      THEN
         armd (rct) := 0;
         aecd (rct) := SQLCODE;
         aem (rct) := SQLERRM;
   END;

   :rmd := rmd;
   :aecd := aecd;
   :aem := aem;
   :armd := armd;
END;
...
Рейтинг: 0 / 0
Вопрос по stored procedure в OracleDataAdapter.UpdateCommand
    #37615438
Hazard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо использовать

Код: c#
1.
UpdateCommand.CommandType = CommandType.StoredProcedure;





в тексте OracleCommand указываем название процедуры без bind переменных
Код: c#
1.
oracleDataAdapter.UpdateCommand = new Oracle.DataAccess.Client.OracleCommand("pkg_emp.update_emp, oracleConnection);




в наименовании параметов используем наименования из БД

Код: c#
1.
2.
3.
4.
                oracleDataAdapter.UpdateCommand.Parameters.Add(new OracleParameter("P_EMPNO", OracleDbType.Int16, 10, "EMPNO"));
                oracleDataAdapter.UpdateCommand.Parameters["P_EMPNO"].Direction = ParameterDirection.Input;
                oracleDataAdapter.UpdateCommand.Parameters.Add(new OracleParameter("P_ENAME", OracleDbType.Varchar2, 30, "ENAME"));
                oracleDataAdapter.UpdateCommand.Parameters["P_ENAME"].Direction = ParameterDirection.Input;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопрос по stored procedure в OracleDataAdapter.UpdateCommand
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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