我在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
答案 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