[ 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 !