Ограничение значений параметра хранимой процедуры в SQL Server - PullRequest
1 голос
/ 18 января 2012

Есть ли способ ограничить значения параметров хранимой процедуры в SQL Server 2008? Это варчар. Например. Я хочу, чтобы это были только «Производство», «Разработка» или «QA». Я бы хотел, чтобы это выдавало ошибку, если кто-то передает «Prod», «Dev», «UAT» или что-то еще.

Ответы [ 4 ]

5 голосов
/ 18 января 2012
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

Вы можете расширить решение, используя таблицу для поиска допустимых значений.

0 голосов
/ 18 января 2012

Единственный способ сделать это - вручную проверить значение.В качестве грубого примера, что-то вроде:

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
0 голосов
/ 18 января 2012

Используя комбинацию блоков IF и ключевого слова RAISEERROR, вы сможете достичь желаемого.

Однако это ограничение звучит так, как будто оно относится к вашему приложению, а не к хранимой процедуре.

0 голосов
/ 18 января 2012

Вы можете использовать оператор IF ... ELSE.

http://msdn.microsoft.com/en-us/library/ms182717.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...