SQL Server |我的存储过程是否正常?

时间:2015-06-28 05:36:52

标签: sql sql-server stored-procedures

CREATE PROCEDURE spCountTableRowWHere
    @TblName VARCHAR(50),
    @TblID VARCHAR(10) = 'Id',
    @WhereClause NVARCHAR(500) = '1=1'
AS
BEGIN
    DECLARE @Query NVARCHAR(500)
    DECLARE @ParamDefinition NVARCHAR(40)
    DECLARE @Count INT
    SET @Query = 'SELECT @C = COUNT('+@TblID+') FROM '+@TblName+' WHERE '+@WhereClause
    SET @ParamDefinition = '@C INT OUTPUT'

    EXECUTE SP_EXECUTESQL @Query, @ParamDefinition, @C = @Count OUTPUT
    SELECT @Count
END

我想知道这种程序是否比不同表格的单独程序更好。

1 个答案:

答案 0 :(得分:4)

简短的回答是否。
答案很长,这是对SQL注入攻击的开放 想想如果有人将以下字符串放在where子句参数中会发生什么:1=1; drop table myTable