[ KizaBG @ 04.10.2008. 00:14 ] @
| Gde je greska u ovom kodu ?
Naime, hocu da mi procedura prvo ispita da li postoji rekord koji ima ova 2 parametra. Ako ima, neka vrati vrednost -2 ,a ako nema neka se izvrsi.
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION;
IF EXISTS(SELECT * FROM T2GR_RadniZadaci WHERE T2GRID = @T2GRID AND RadniZadatakID = @RadniZadatakID)
RETURN -2 < --- ako postoji rekord, izadji, i vrati -2
INSERT INTO T2GR_RadniZadaci(T2GRID,RadniZadatakID, RadniZadatak,CiljRadnogZadatka,PonderCilja)
VALUES(@T2GRID, @RadniZadatakID,@RadniZadatak, @CiljRadnogZadatka, @PonderCilja )
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
EXEC db_PrintError
EXEC db_RethrowError
RETURN -1;
END CATCH
RETURN 1;
END |
[ Fedya @ 04.10.2008. 12:22 ] @
Pitanje: Sta se desi sa tvojom transakcijom ako zapis postoji?
[ KizaBG @ 04.10.2008. 13:00 ] @
Ako zapis postoji, ne ubacuje se rekord, izlazi se iz transakcije i vraca greska -2
no ... vec se mucim celo jutro, i citam po netu, pa cu najverovatnije resiti ovo sa @IDentity-em ..
osim, ako ne postoji ipak resenje sa Exists ?
poz.
[ mmix @ 04.10.2008. 14:52 ] @
Pa covek ti dade hint :)
Ne mozes da uradis return usred transakcije, ostavljas transakciju otvorenom, sto ti verovatno izaziva probleme. Ako otvoris trasnsakciju geldaj da je uvek zatvoris u istom scope-u.
Prebaci IF EXISTS iznad BEGIN TRY kao inicijalno resenje.
[ KizaBG @ 04.10.2008. 15:23 ] @
U pravu si, nego zurim sa poslom, pa ni razmisljao nisam sta je napisao, jer sam pronsao nacin preko Scope_Identity
hvala i tebi za odgovor !
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.