Я создал эту хранимую процедуру, которая принимает параметр @UpdType char(1)
. Процедура выполняется независимо от того, какой параметр вводится. Однако; хранимая процедура только завершает свою функцию, если параметр равен R
или U
.SQL - Ограничение входных параметров хранимой процедуры
Есть ли способ ограничить хранимую процедуру только для приема параметров R
или U
в качестве входных данных ?.
CREATE PROCEDURE UPDATECATS @UPDTYPE CHAR(1)
AS
BEGIN
IF @UPDTYPE = 'U' --UPDATE TO NEW CATEGORIES IF PARAMETER IS R
BEGIN
UPDATE CATLEVEL1
SET CAT1DESC = 'LABORATORY EQUIPMENT'
WHERE CAT1DESC = 'MEDICAL & ALLIED EQUIPMENT'
UPDATE CATLEVEL1
SET CAT1DESC = 'MACHINERY & CAMPUS EQUIPMENT'
WHERE CAT1DESC = 'OTHER MACHINERY & EQUIPMENT'
END
IF @UPDTYPE = 'R' --REVERSE TO OLD CATEGORIES IF THE PARAMETER IS U
BEGIN
UPDATE CATLEVEL1
SET CAT1DESC = 'MEDICAL & ALLIED EQUIPMENT'
WHERE CAT1DESC = 'LABORATORY EQUIPMENT'
UPDATE CATLEVEL1
SET CAT1DESC = 'OTHER MACHINERY & EQUIPMENT'
WHERE CAT1DESC = 'MACHINERY & CAMPUS EQUIPMENT'
END
IF @UPDTYPE = 'R' OR @UPDTYPE = 'U' --UPDATE THE CATEGORIES IN THE ASSETS TABLE
BEGIN
UPDATE ASSETS
SET ASSETS.CAT3 = B.CATLEVEL3LINK
FROM ASSETS A
LEFT JOIN ASSETDESC B ON A.ASDES = B.ASSETDESCRIPTION
UPDATE ASSETS
SET ASSETS.CAT2 = B.CATLEVEL2LINK
FROM ASSETS A
LEFT JOIN CATLEVEL3 B ON A.CAT3 = B.CAT3DESC
UPDATE ASSETS
SET ASSETS.CAT1 = B.CATLEVEL1LINK
FROM ASSETS A
LEFT JOIN CATLEVEL2 B ON A.CAT2 = B.CAT2DESC
END
END
'НЕ INT'. Вы должны обрабатывать 'NULL' [Demo] (https://data.stackexchange.com/stackoverflow/query/451568) – lad2025
Определенные пользователем типы имеют проблемы с ремонтопригодностью, поэтому принимая во внимание, что существует только два значения, используя бит с нулевым значением , как IsRead намного лучше. Использование бит лучше, чем проверка, поскольку у вас есть более четкий и четко определенный контракт для вашей хранимой процедуры - и любое недопустимое значение будет обнаружено в момент интерпретации, но не выполняется. – ironstone13