У меня есть требование для выполнения запроса против базы данных, которая возвратит или нуль или один (Проверяющий на существование определенных критериев). Технические спецификации, которые мне дали для обзора, указывают, что я должен создавать хранимую процедуру, которая возвратит одну строку с отдельным столбцом, названным "результатом", который будет содержать немного значения 0 или 1. Однако я не уверен, что хранимая процедура была бы лучшим подходом, но немного не уверена так думал, что я попрошу Вас у мнений. Эти две опции, о которых я могу думать:
1: Создайте скалярную функцию SQL, которая выполняет запрос и возвращается немного. Это можно было затем назвать непосредственно из клиентского приложения .NET с помощью "ТЕКСТА" объект SqlCommand, и это возвратит bool из "ExecuteScalar ()" метод.
2: Создайте хранимую процедуру, как описано в технических спецификациях. Это затем назвали бы из приложения.Net Client нормальным способом и возвратит DataTable с одной строкой и отдельным столбцом, который содержит битовое значение.
Мне опция каждый кажется лучшим. Однако что-то позади моей головы говорит, что это не такая хорошая идея.
Вы могли дать свои мнения, и справка уменьшают мои проблемы?:)
С наилучшими пожеланиями, Ian
Вызов скалярной функции - абсолютно правильное решение.
Я полагаю, это зависит от логики, которую должна выполнять соответствующая функция базы данных (sp / udf).
Если, например, нас интересует, сколько раз выполнялась конкретная функция db, нам определенно необходимо выполнить некоторые манипуляции с данными и обновления в различных таблицах. Следовательно, нам придется использовать здесь сохраненные процессы. Если это простой поиск, подойдет и udf.
Выполните хранимую процедуру, используя метод ExecuteScalar () . Затем вы можете преобразовать результат в логическое значение.
например
SqlConnection con = new SqlConnection(connectionString);
SqlCommand com = new SqlCommand("Execute dbo.usp_MyStoredProc", con);
return (Boolean)com.ExecuteScalar();
Решение этой проблемы с помощью хранимой процедуры лучше в долгосрочной перспективе, поскольку она более гибкая и адаптируемый