2015-06-28 38 views
2
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('[email protected]+') FROM '[email protected]+' WHERE '[email protected] 
    SET @ParamDefinition = '@C INT OUTPUT' 

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

我想知道這種程序是否比單獨的程序更適合不同的表格。SQL Server |我的存儲過程是否正常?

+3

恩,爲什麼你甚至需要這樣的proc? –

+1

不要在你的程序中使用sp -prefix,它意味着系統過程,並且有特殊的含義 –

+0

@MitchWheat,我將在我的vb應用程序中使用它 – Middleman

回答

4

簡短的回答是否定的。
長的答案是,它是一個開放的SQL注入攻擊。
想想如果有人會將下列字符串放在where子句參數中,會發生什麼情況:1=1; drop table myTable

+0

謝謝@Zohar Peled,我忘記了SQL注入 - _-爲noob問題抱歉的傢伙 – Middleman