Допустим, у меня есть 2 графств:Проверка записей Перед обновлением в хранимых процедур
- B
Каждый из них имеет свой собственный URL:
- www.A. com
- www.B.com
У меня есть хранимая процедура, которая принимает 3 переменные, чтобы включить или отключить службу для URL-адреса. Требуется переменная @Enable
, но пользователь может ввести переменные @County_Code
или @WebserviceURL
- или и то, и другое. Но если они вводят оба, я хочу проверить, что запись завершена в базе данных.
Например,
EXEC [dbo].usp_webservice_change_status @enable = 1, @county_code = 'A', @webserviceURL = 'www.A.com';
должен выполнять и обновлять флаг Enable.
Но если я выполню со следующими значениями, я хотел бы, чтобы была возвращена ошибка, указывающая на то, что у округа А нет соответствующего значения www.B.com.
EXEC [dbo].usp_webservice_change_status @enable = 1, @county_code = 'A', @webserviceURL = 'www.B.com';
Вот полный хранимая процедура:
ALTER PROCEDURE [dbo].[usp_webservice_change_status]
@enable AS BIT,
@county_code AS CHAR(2) = NULL,
@webserviceURL AS VARCHAR(4000) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @enable IS NULL
RAISERROR ('The value for @enable should not be null', 15, 1);
IF (@county_code IS NULL AND @webserviceURL IS NULL)
RAISERROR ('The value for @county_code and @webserviceURL cannot both be null', 15, 1);
IF (@county_code IS NOT NULL AND @webserviceURL IS NULL)
UPDATE dbo.webservice_config
SET [enable] = @enable,
comments = CASE
WHEN @enable = 1 THEN 'Enabled by ' + SUSER_SNAME()
ELSE 'Disabled by ' + SUSER_SNAME()
END
WHERE county_code = @county_code
ELSE IF (@county_code IS NULL AND @webserviceURL IS NOT NULL)
UPDATE dbo.webservice_config
SET [enable] = @enable,
comments = CASE
WHEN @enable = 1 THEN 'Enabled by ' + SUSER_SNAME()
ELSE 'Disabled by ' + SUSER_SNAME()
END
WHERE webservice_URL = @webserviceURL
ELSE IF (@county_code IS NOT NULL AND @webserviceURL IS NOT NULL)
UPDATE dbo.webservice_config
SET [enable] = @enable,
comments = CASE
WHEN @enable = 1 THEN 'Enabled by ' + SUSER_SNAME()
ELSE 'Disabled by ' + SUSER_SNAME()
END
WHERE (county_code = @county_code AND webservice_URL = @webserviceURL)
END;
Очень круто - ваш первый пример отлично работает. Ценить это. – MISNole
Не стоит беспокоиться @MISNole – scsimon