Несколько запросов в хранимой процедуре SQL server не выполняются
Я создал хранимую процедуру,в которой есть запросы select,insert, delete, а также update. В котором выполняется только один запрос в хранимой процедуре, остальные не выполняются.
Что я уже пробовал:
хранимая процедура:
CREATE PROCEDURE [dbo].[usp_Emp_LeaveApplication] ( @EmpID VARCHAR(50), @NumberOfDays INT, @LeaveFromDate DATE, @LeaveToDate DATE, @CreatedOn DATETIME, @TypeOfLeave VARCHAR(100), @StatusOfLeave VARCHAR(10), @ReasonForLeave VARCHAR(MAX), @Comments VARCHAR(MAX), @StatementType NVARCHAR(20) = '', @ResponseMessage NVARCHAR(250) OUTPUT ) AS BEGIN SET NOCOUNT ON; SET @LeaveFromDate = CONVERT(datetime, @LeaveFromDate) SET @LeaveToDate = CONVERT(datetime, @LeaveToDate) SET @Comments = ISNULL(NULL, @Comments) BEGIN TRY BEGIN TRANSACTION IF (@StatementType = 'Insert') BEGIN INSERT INTO Emp_LeaveApplication ( EmpID, NumberOfDays, LeaveFromDate, LeaveToDate, CreatedOn, TypeOfLeave, StatusOfLeave, ReasonForLeave, Comments) values( @EmpID, @NumberOfDays, @LeaveFromDate, @LeaveToDate, @CreatedOn, @TypeOfLeave, @StatusOfLeave, @ReasonForLeave, @Comments) SET @ResponseMessage = 'Your request for leave has registered successfully!!!' END ELSE IF (@StatementType = 'Select') BEGIN select * from Emp_LeaveApplication END ELSE IF (@StatementType = 'SelectByID') BEGIN SELECT * FROM Emp_LeaveApplication WHERE EmpID = @EmpID END ELSE IF (@StatementType = 'Update') BEGIN UPDATE Emp_LeaveApplication SET NumberOfDays = @NumberOfDays, LeaveFromDate = @LeaveFromDate, LeaveToDate = @LeaveToDate, TypeOfLeave= @TypeOfLeave, StatusOfLeave = @StatusOfLeave, ReasonForLeave = @ReasonForLeave WHERE EmpID = @EmpID SET @ResponseMessage = 'Your leave status has been updated successfully!!!' END ELSE IF (@StatementType = 'Delete') BEGIN DELETE FROM Emp_LeaveApplication WHERE EmpID = @EmpID SET @ResponseMessage = 'Leave request has been deleted' END ELSE IF (@StatementType = 'Cancel') BEGIN UPDATE Emp_LeaveApplication SET StatusOfLeave = 'Cancelled', ReasonForLeave = @ReasonForLeave WHERE EmpID = @EmpID SET @ResponseMessage = 'Your leave status has been cancelled successfully!!!' END COMMIT TRANSACTION END TRY BEGIN CATCH IF @@TRANCOUNT > 0 BEGIN SET @ResponseMessage = ERROR_MESSAGE() ROLLBACK TRANSACTION END END CATCH END
Что я делаю неправильно. Кто-нибудь может мне объяснить
Member 8583441
Я не с помощью любого элемента управления GridView, только кнопка событие click
OriginalGriff
Какой из них, и что вы выдаете за других?
И вообще, зачем тебе это делать?
Member 8583441
Мне нужно внести некоторые изменения в таблицы базы данных с определенным столбцом..... Если это неправильное предложение, предложите мне лучшее, чтобы практиковать для себя, сэр.