Трудно не увидеть всю вашу процедуру, так как внизу есть END TRY
без BEGIN TRY
, поэтому ваши операторы могут даже не выполняться, потому что выполнение переходит к CATCH
. Также убедитесь, что вы не начинаете транзакцию, не совершив ее.
Кроме этого, существует разница между вашим ручным запросом и вашей процедурой, типом которой является @DealerCode
. В вашем ручном запросе это INT
(или числовой), а в вашем SP это VARCHAR
необъявленной длины. Проверьте, какой тип данных является вашим столбцом dealercode
из таблицы ourwebsite.dbo.reps
, и убедитесь, что ваша переменная того же типа. Также всегда указывайте длину ваших полей VARCHAR
.
Протестируйте следующий код, и он обновит ваши записи , так же как и ваш отдельный запрос:
CREATE PROCEDURE dbo.TestUpdate
@dealercode INT
AS
BEGIN
UPDATE ourwebsite.dbo.dealer
SET Active = 0
WHERE dealercode = @dealercode
UPDATE ourwebsite.dbo.reps
SET username = username + '_LR-3.0'
WHERE dealercode = @dealercode
END
Если это сработает, либо удалите BEGIN TRY
... END TRY
и все ваши CATCH
, чтобы точно увидеть ошибку, которую вы получаете, либо убедитесь, что вы сделали RAISERROR
в своем улове с соответствующим ERROR_MESSAGE()
. Пример:
CREATE PROCEDURE dbo.YourProcedure
@dealercode VARCHAR(20)
AS
BEGIN
BEGIN TRY
-- Your operations here
SELECT 1 / 0
END TRY
BEGIN CATCH
DECLARE @v_ErrorMessage VARCHAR(MAX) = CONVERT(VARCHAR(MAX), ERROR_MESSAGE())
-- Rollback if you have to
RAISERROR (@v_ErrorMessage, 16, 1)
END CATCH
END