在 t-sql 中编写 c#代码是否有效?
string sqlText = "SELECT col1, col2, col3 "
+ "FROM table "
+ "WHERE col1 = @val1 ";
if(condition) // i.e. if type == 'salary'
{
sqlText += " AND col2 = @val2";
}
sqlText += " ORDER BY col1";
我做了什么,它的工作方式是用if/being/end
来完成整个陈述。
IF(@empType = 'salary')
BEGIN
//query statement here...
END
ELSE
BEGIN
//same query statement here with the extra logic that C# code adds...
END
该查询用于在HTML页面上显示数据。现在,已经决定将页面转换为SSRS报告。
感谢您的帮助
答案 0 :(得分:3)
像
这样的东西SELECT col1, col2, col3
FROM table
WHERE col1 = @val1
AND (@empType <> 'salary'
OR (@empType = 'salary' AND col2 = @val2))
ORDER BY col1
但我不确定empType是什么,如果它是一个参数或其他东西。
动态构建SQL是不好的,原因有几个(SQL服务器无法可靠地优化,更多地暴露于潜在的SqlInjection),但是像上面这样的竞争条件模式会起作用。
考虑单独的存储过程并通过代码调用正确的过程而不是这种混乱。