none
ADO.NET中如何动态给存储过程传参,以及如何创建支持动态参数的存储过程? RRS feed

  • 问题

  • 我有如下存储过程:

    create procedure pro_getCustomers
    (
    	@whereSql nvarchar(max)
    )
    as
    declare @sql nvarchar(max)
    set @sql=N'select * from dbo.Customer ' + @whereSql
    exec(@sql)
    Go
    

    --测试调用
    exec pro_getCustomers 'where Id=1'

    --如果我要在ADO.NET中参数化查询这个存储过程,以防止SQL注入,我该怎么办呢?比如:
    exec pro_getCustomers 'where Name=@name'

    --其中@name 有客户端输入

     

    请教?


    2010年12月25日 2:35

答案

  • 你可以用StringBuilder动态生成一条语句,并通过判断,生成不同大小的Sql参数的sql,当然这就无法使用存储过程,不建议在存储过程中包含逻辑
    • 已标记为答案 陈书函 2010年12月27日 1:05
    2010年12月26日 15:07

全部回复