динамический запрос, генерируемый хранимой процедурой или функцией

#c# #sql-server

#c# #sql-сервер

Вопрос:

У меня есть таблица с 4 столбцами, то есть заголовок, описание, ключевое слово, дата в C#.net с помощью кнопки поиска и текстового поля.

Когда я пишу заголовок описание ключевое слово дата, он вернет связанные данные, нажав кнопку поиска.

Если я напишу ключевое слово дата сохранение описания и заголовка null, это вернет связанные данные из grid. И так далее, другая комбинация из этих 4 столбцов.

То есть выполняется поиск по полям в каждом столбце, и комбинация изменяется динамически

Мне нужна хранимая процедура или функция для него в SQL SERVER. Есть предложения?.. заранее спасибо

Комментарии:

1. Вы решили свою проблему? Если да, то отметьте любой из ответов как принятый, если вы считаете его действительно полезным.

Ответ №1:

вы можете создать процедуру с четырьмя параметрами (каждый для ваших опций) и следующим 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)
всегда будет иметь значение true.

Комментарии:

1. я пытаюсь создать процедуру, но проблема в том, как объединить эти 4 параметра, как это будет желательно во время выполнения, какую комбинацию параметров пользователь хочет выполнить поиск

2. означает ли это, что вы не знаете, как пользователь заполняет поле ввода? можете ли вы прислать пример пользовательского ввода?

3. я решил свою проблему.. Я новичок на этой странице, поэтому мне не разрешили опубликовать экран для моего требования …. спасибо за помощь…

Ответ №2:

Создайте функцию на 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;
}