lov*_*mar 2 c# sql sql-server ado.net
我有这个查询,用户在运行时输入.
SELECT * FROM Reports
WHERE ReportDate > DATEADD(d, @Days, getdate())
AND ReportCode = cast(@Reportcode as int)
Run Code Online (Sandbox Code Playgroud)
在C#.Net或SQL中是否有任何方法可以从此sql查询中检索参数名称@Days和@ReportCode?
使用@字符的正则表达式或字符串匹配不是完全证明,因为参数名称可能以空格结尾,也可能不以空格结尾.它们可以紧跟逗号或括号等,名称本身可以包含特殊字符.
如果我在不提供参数值的情况下执行此查询,则sql引擎抛出异常必须声明标量变量"@Days".我可以捕获异常并获取第一个参数名称,但是在查询中获取下一个参数会非常复杂.
exec sp_describe_undeclared_parameters N'SELECT * FROM Reports
WHERE ReportDate > DATEADD(d, @Days, getdate())
AND ReportCode = cast(@Reportcode as int)'
Run Code Online (Sandbox Code Playgroud)
输出:
parameter_ordinal name suggested_system_type_id suggested_system_type_name
----------------- ------------- ------------------------ ----------------------------
1 @Days 56 int
2 @Reportcode 56 int
Run Code Online (Sandbox Code Playgroud)
(跳过更多列)
但是,这是SQL Server功能,而不是ADO.NET功能.
如果我在不提供参数值的情况下执行此查询,
这里的关键技巧非常简单:提供正确的参数
注意:您也可以用@params它来告诉您已经了解的那些.有关更多详细信息,请参阅文档.
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |