Получить затронутые строки после вставки / обновления - PullRequest
0 голосов
/ 21 апреля 2020

ExecuteNonQuery всегда возвращает -1, даже если мой код SQL вставляет или обновляет строки:

var cmd = _context.CreateCommand(sql, CommandType.Text, parameters);
var affectedRows = cmd.ExecuteNonQuery();

Это мой код SQL - мне нужно решение в C# без изменения SQL код:

DECLARE
--  my_stav_zakazka NUMBER(17,8);
  my_pocet_rezerv NUMBER;   
BEGIN
  SELECT count(*)  
    INTO my_pocet_rezerv
    FROM ZAKAZKANDREZ     
   WHERE ZAKAZKA_ID = :ZAKAZKA_ID    
     AND SKLAD_OZN = :SKLAD_OZN
     AND VYROBEKND_OZN = :VYRND_OZN  
     AND ND_NR = :ND_NR              
     AND ZAKAZKANDEXTODPIS_ID = :ZAKAZKANDEXTODPIS_ID
     AND FLAG = 1;
  IF my_pocet_rezerv = 0 
  THEN
     INSERT INTO ZAKAZKANDREZ
        (ND_NR, SKLAD_OZN, STAV_REZERV, TEXT, VSTUP_DAT, VSTUP_PRAC_ID, VYROBEKND_OZN, ZAKAZKA_ID, VSTUP_PROV_ID, VYDEJ_MJ_ID, VYDEJ_MJ_POC, FLAG, ZAKAZKANDEXTODPIS_ID)
     VALUES
        (:ND_NR, :SKLAD_OZN, :STAV_REZERV, :TEXT, SYSDATE, SYS_CONTEXT('DMSENV','CURR_USER_ID'), :VYRND_OZN, :ZAKAZKA_ID, :VSTUP_PROV_ID, :VYDEJ_MJ_ID, :VYDEJ_MJ_POC, 1, :ZAKAZKANDEXTODPIS_ID);
  ELSE
     UPDATE ZAKAZKANDREZ
        SET STAV_REZERV = :STAV_REZERV, EDIT_DAT = SYSDATE, EDIT_PRAC_ID = SYS_CONTEXT('DMSENV','CURR_USER_ID')  
      WHERE ZAKAZKA_ID = :ZAKAZKA_ID
        AND SKLAD_OZN = :SKLAD_OZN
        AND VYROBEKND_OZN = :VYRND_OZN 
        AND ND_NR = :ND_NR 
        AND ZAKAZKANDEXTODPIS_ID = :ZAKAZKANDEXTODPIS_ID
        AND FLAG = 1;
  END IF;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...