PDA

View Full Version : تراکنش داخل sp



gelayor14
چهارشنبه 02 مهر 1393, 11:24 صبح
سلام
یه spنوشتم که دو تا عمل درج و آپدیت رو انجام بده
درج امانت یک کتاب ،با پارامترهایی که مشخصه و بعد بره آپدیت کنه جدول کتابها رو و اون کتابی که به امانت برده شده موجودی اش رو 0 کنه
CREATE PROCEDURE dbo.StoredProcedure1(@Code_Personeli int,@Code_besat_Book nvarchar(80),@type nvarchar(30),@tarikh_amanatStr nvarchar(30),@CodebesatBook nvarchar(80))
AS
BEGIN TRAN
INSERT TblAmanat(Code_Personeli,Code_besat_Book,type,tari kh_amanatStr)
values(@Code_Personeli,@Code_besat_Book,@type,@tar ikh_amanatStr)
IF(@@ERROR<>0)
BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1

UPDATE TblBook SET entity=0 where CodebesatBook=@CodebesatBook
IF(@@ERROR<>0)
BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1
END
COMMIT TRAN
RETURN 0

الان این خطا رو بهم میده
123840

parvizwpf
چهارشنبه 02 مهر 1393, 11:35 صبح
آیا تو خود sql ازش جواب میگیرید؟

gelayor14
چهارشنبه 02 مهر 1393, 12:40 عصر
الان تو خود sql هم امتحان کردم باز هم مشابه همین خطا رو میده
Msg 102, Level 15, State 1, Procedure StoredProcedure1, Line 20
Incorrect syntax near '0'.

دقیقا خطا تو خط آخره RETURN 0
هست

gelayor14
جمعه 04 مهر 1393, 07:00 صبح
بعد از کلی کلنجار رفتن دو قسمتی که ERROR@@ بود رو حذف کردم جواب داد!

CREATE PROCEDURE dbo.StoredProcedure1(@Code_Personeli int,@Code_besat_Book nvarchar(80),@type nvarchar(30),@tarikh_amanatStr nvarchar(30),@CodebesatBook nvarchar(80))
AS
BEGIN TRAN
INSERT TblAmanat(Code_Personeli,Code_besat_Book,type,tari kh_amanatStr)
values(@Code_Personeli,@Code_besat_Book,@type,@tar ikh_amanatStr)

UPDATE TblBook SET entity=0 where CodebesatBook=@CodebesatBook
COMMIT TRAN
RETURN 0

cherchil_hra
شنبه 05 مهر 1393, 07:02 صبح
اگه دقت کنی برای Begin اولت end وجود نداره! علت خطا هم همینه
IF(@@ERROR<>0)
BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1

UPDATE TblBook SET entity=0 where CodebesatBook=@CodebesatBook

موفق باشید!