存储过程或函数生成的动态查询

时间:2011-05-11 11:02:34

标签: c# sql-server

我有一个包含4列的网格,即标题,描述,关键字,C#.net中的日期 使用搜索按钮和文本框。

当我写标题+说明+关键字+日期时,它会通过点击搜索按钮返回相关数据。

如果我写关键字+日期+保持描述和标题为null,它将从网格返回相关数据。等等这4栏的其他组合。

也就是说,它正在从每列中的字段进行搜索,并且组合动态变化

我想在SQL SERVER中为它创建存储过程或函数。有什么建议吗?...提前谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用四个参数创建一个过程(每个参数用于您的选项)并遵循SQL

CREATE PROC Search(
  @title VARCHAR(20) NULL, ...
AS SELECT * FROM your_table WHERE (title = @title OR @title IS NULL) etc.

无论如何,您应该解析输入以获取每个参数的值。因此,当您将null传递给@title参数时,WHERE条件(title = @title OR @title IS NULL)  将永远是真的。

答案 1 :(得分:0)

在C#中创建一个函数,传递包含列名和表名的字符串数组,此函数将返回查询字符串。

public string BuildQuery(string[] columnNames, string tableName)
{
string query = string.Empty;

query = "SELECT ";
foreach(string str in columnNames)
query += str + ", ";
query = query.Substring(0, query.Length - 1);
query += " FROM " + tableName;

return query;
}