Lly*_*yle 14 sql t-sql ado.net parameterized-query
我有一个针对SQL2005的参数化SQL查询,它是在代码中动态创建的,所以我使用ADO.NET SqlParameter类来添加sql参数SqlCommand.
在前面提到的SQL中,我从具有默认值的表值函数中进行选择.我希望我的动态sql有时为这些默认参数指定一个值,有时我想指定应该使用SQL DEFAULT- 如表值函数中定义的那样.
为了保持代码清洁,我不想动态添加SQL DEFAULT关键字并在使用非默认值时对其进行参数化,我只想将其设置DEFAULT为my的值SQLParameter.
我可以吗?在这种情况下,最佳做法是什么?
Bil*_*win 15
SQL查询参数仅取代文字值.
你不能发送SQL关键字作为参数的值,就像你不能发送表标识,列标识符,值列表(例如,对于一个IN谓语),或者一个表达式.该参数的值总是解释为文字值,因为如果你列入了引号的字符串常量或在查询数字文字.
抱歉,您必须在准备该查询之前将SQL关键字包含在SQL 查询中.
AFAIK,告诉SQL Server使用默认值的唯一方法是通过DEFAULT关键字或将其从参数列表中排除。这意味着DEFAULT必须在参数化的SQL语句中使用关键字。因此,类似:
Select ...
From dbo.udf_Foo( DEFAULT, @Param2, @Param3, DEFAULT, .... )
Run Code Online (Sandbox Code Playgroud)
我想另一种方法是查询系统目录中各种DEFAULT值的实际值,并确定是否以这种方式将SqlParameter设置为默认值,但这需要进行复杂的第二次查询才能获得默认值。