防止无效的参数输入

时间:2015-02-20 17:19:08

标签: sql sql-server stored-procedures

我有一个参数被传递给一个过程,该过程以varchar的形式接收一个int列表,如下所示:

@sSortFilter    VARCHAR(512) = ''

我想在程序方面验证它,所以如果有人在执行过程时在int之前的开头放一个逗号,例如:

, 23, 24

而不是23, 24它会防止这种情况发生,因此程序不会爆炸。

有没有办法使用SQL来防范这种情况?

2 个答案:

答案 0 :(得分:0)

请看这里:https://msdn.microsoft.com/en-us/library/ms175976.aspx

示例:

 BEGIN TRY

  SELECT 1/0;
  --This is where you would break your list down, if it fails here the catch will fire
END TRY
BEGIN CATCH
 -- how you want to handle the error.
END CATCH; 

答案 1 :(得分:0)

Case statement与某些string functions一起使用,以检查您的输入是否具有前导comma并覆盖它。试试这个。

DECLARE @sSortFilter VARCHAR(512) = ', 23, 24'

SELECT @sSortFilter = CASE
                        WHEN LEFT(Ltrim(@sSortFilter), 1) = ',' THEN Ltrim(Substring(@sSortFilter, 2, Len(@sSortFilter)))
                        ELSE @sSortFilter
                      END

SELECT @sSortFilter