Есть ли способ ограничить значения параметров хранимой процедуры в SQL Server 2008? Это варчар. Например. Я хочу, чтобы это были только «Производство», «Разработка» или «QA». Я бы хотел, чтобы это выдавало ошибку, если кто-то передает «Prod», «Dev», «UAT» или что-то еще.
CREATE PROC SomeProc @par VARCHAR(50) AS BEGIN IF @par NOT IN ('Production', 'Development', 'QA') RAISERROR(N'Your Message',16,1) -- MORE CODE HERE END
Вы можете расширить решение, используя таблицу для поиска допустимых значений.
Единственный способ сделать это - вручную проверить значение.В качестве грубого примера, что-то вроде:
CREATE PROCEDURE [dbo].[MyProcedure] @value varchar(32) AS BEGIN declare @isAllowed bit = 0 if @value in ('Hello', 'World') set @isAllowed = 1 if @isAllowed begin -- Do work here end else begin -- Send error here end END
Используя комбинацию блоков IF и ключевого слова RAISEERROR, вы сможете достичь желаемого.
IF
RAISEERROR
Однако это ограничение звучит так, как будто оно относится к вашему приложению, а не к хранимой процедуре.
Вы можете использовать оператор IF ... ELSE.
http://msdn.microsoft.com/en-us/library/ms182717.aspx