存储过程中的数据验证

时间:2013-11-25 21:25:27

标签: sql sql-server sql-server-2008

我在SQL Server 2008中有一个存储过程。此存储过程的工作非常简单 - 它将数据插入表中。该表中的一列是varchar类型,我对该列的数据验证有疑问。它接受客户端代码传递的任何价值 - 预计会发生这种情况。我被告知不要在该栏中插入“新”。客户端代码神秘地发送'NEW'作为存储过程参数,存储过程正在插入该值。我知道这需要由客户端代码处理。但是,由于我负责表数据 - 我计划在存储过程找到'NEW'时抛出异常。我怎样才能做到这一点?

这是我的存储过程的格式:

ALTER PROCEDURE Object_Save
    @Id int = 0 OUTPUT              
    ,@OrderId int
    ,@OrderNumber varchar(20)
AS
    BEGIN TRY
        IF @Id = 0
            BEGIN
                INSERT INTO Table_Order(OrderId, OrderNumber) 
                VALUES (@OrderID, @OrderNumber)

                Set @Id = SCOPE_IDENTITY()
            END
        ELSE
            BEGIN
                -- Update
            END
    END TRY
    BEGIN CATCH
        exec error_catch
    END CATCH

1 个答案:

答案 0 :(得分:2)

我想你可以做这样的事情

ALTER PROCEDURE Object_Save
    @Id int = 0 OUTPUT              
    ,@OrderId int
    ,@OrderNumber varchar(20)
AS
    BEGIN TRY
        IF @Id = 0
            BEGIN
        /*Say clients been passing value "New" to @OrderNumber*/

           IF (@OrderNumber = 'New')
            BEGIN
              RAISERROR('Invalid OrderNumber Please Provide valid value', 16, 1)
              RETURN
            END

                INSERT INTO Table_Order(OrderId, OrderNumber) 
                VALUES (@OrderID, @OrderNumber)

                Set @Id = SCOPE_IDENTITY()
            END
        ELSE
            BEGIN
                -- Update
            END
    END TRY
    BEGIN CATCH
        exec error_catch
    END CATCH