Я использую хранимую процедуру базы данных для вставки в мою базу данных. Он работал нормально, но поскольку это новый год, мы создали новую базу данных, где все остается неизменным, но данные удаляются. Проблема в том, что хранимая процедура работает с старой базой данных, но не с новой.INSERT возвращает затронутые строки, но ничего не происходит
Я проверил таблицы (старые и новые), и все одинаково. Процедуры также одинаковы. Когда я его отлаживаю, он дает мне, что cmd.ExecuteNonQuery()
затронул 61 строку без какой-либо ошибки, но ничего не отображается в таблице.
Почему это происходит, что я могу сделать, что искать?
Я понял, что executeNonQuery
теперь дает мне -1
Вот вызов процедуры:
int selectedRowIndex = dataGridView1.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = dataGridView1.Rows[selectedRowIndex];
int robaID = Convert.ToInt16(selectedRow.Cells["ROBAID"].Value);
decimal unesenaKolicina = kolicina.Value;
using (FbConnection con = new FbConnection(connectionString_Baza))
{
con.Open();
using (var cmd = new FbCommand("NAPRAVISTAVKU", con)
{
CommandType = CommandType.StoredProcedure
})
{
cmd.Parameters.AddWithValue("@VRDOK", 33);
cmd.Parameters.AddWithValue("@BRDOK", brojDokumenta);
cmd.Parameters.AddWithValue("@ROBAID", robaID);
cmd.Parameters.AddWithValue("@CENA_BEZ_PDV", 0);
cmd.Parameters.AddWithValue("@KOL", unesenaKolicina);
cmd.Parameters.AddWithValue("@RABAT", 0);
cmd.ExecuteNonQuery();
}
con.Close();
}
А вот сама процедура:
SET TERM^;
ALTER PROCEDURE NAPRAVISTAVKU (
VRDOK smallint,
BRDOK integer,
ROBAID integer,
CENA_BEZ_PDV numeric(15,2),
KOL numeric(15,3),
RABAT numeric(15,2))
RETURNS (
OK smallint)
AS
DECLARE VARIABLE MAGACINID SMALLINT;
DECLARE VARIABLE MTID VARCHAR(10);
DECLARE VARIABLE NAZIV VARCHAR(50);
DECLARE VARIABLE TARIFAID VARCHAR(3);
DECLARE VARIABLE NABAVNACENA NUMERIC(15, 4);
DECLARE VARIABLE POREZ NUMERIC(15, 2);
BEGIN
OK = 0;
SELECT MAGACINID, MTID FROM DOKUMENT
WHERE VRDOK = :VRDOK AND BRDOK = :BRDOK
INTO :MAGACINID, :MTID;
SELECT NAZIV FROM ROBA WHERE ROBAID = :ROBAID
INTO :NAZIV;
SELECT NABAVNACENA FROM ROBAUMAGACINU
WHERE MAGACINID = :MAGACINID AND ROBAID = :ROBAID
INTO :NABAVNACENA;
IF (CENA_BEZ_PDV = 0) THEN BEGIN
SELECT PRODAJNACENA FROM ROBAUMAGACINU
WHERE MAGACINID = :MAGACINID AND ROBAID = :ROBAID
INTO :CENA_BEZ_PDV;
END
SELECT TARIFAID FROM ROBA WHERE ROBAID = :ROBAID
INTO TARIFAID;
SELECT STOPA FROM TARIFE WHERE TARIFAID = :TARIFAID
INTO :POREZ;
INSERT INTO STAVKA (VRDOK, BRDOK, MAGACINID, ROBAID, VRSTA, NAZIV, NABCENSAPOR, FAKTURNACENA, NABCENABT,
TROSKOVI, NABAVNACENA, PRODCENABP, KOREKCIJA, PRODAJNACENA, DEVIZNACENA, DEVPRODCENA, KOLICINA,
NIVKOL, TARIFAID, IMAPOREZ, POREZ, RABAT, MARZA, TAKSA, AKCIZA, PROSNAB, PRECENA, PRENAB, PROSPROD,
MTID, PT, TREN_STANJE, POREZ_ULAZ, DEVNABCENA, POREZ_IZ)
VALUES (:VRDOK, :BRDOK, :MAGACINID, :ROBAID, 1, :NAZIV, 0, 0, 0,
0, :NABAVNACENA, :CENA_BEZ_PDV, 0, :CENA_BEZ_PDV, 0, 0, :KOL,
0, :TARIFAID, 0, :POREZ, :RABAT, 0, 0, 0, 0, 0, 0, 0,
:MTID, 'P', 0, 0, 0, :POREZ);
SUSPEND;
/* Obrada greske */
WHEN ANY DO
BEGIN
OK = -1;
SUSPEND;
END
END^
SET TERM ;^
GRANT EXECUTE
ON PROCEDURE NAPRAVISTAVKU TO "PUBLIC";
GRANT EXECUTE
ON PROCEDURE NAPRAVISTAVKU TO SYSDBA;
Вы обновили строку подключения, чтобы указать на новую БД? – juharr
Да, я сделал это. Протестировал его локально и на сервере – Parpil
@juharr я отредактировал сообщение. Можете ли вы проверить его сейчас и сказать мне, если что-то встанет на ваш взгляд? – Parpil