Вызывание Функций SQL непосредственно от C#

У меня есть требование для выполнения запроса против базы данных, которая возвратит или нуль или один (Проверяющий на существование определенных критериев). Технические спецификации, которые мне дали для обзора, указывают, что я должен создавать хранимую процедуру, которая возвратит одну строку с отдельным столбцом, названным "результатом", который будет содержать немного значения 0 или 1. Однако я не уверен, что хранимая процедура была бы лучшим подходом, но немного не уверена так думал, что я попрошу Вас у мнений. Эти две опции, о которых я могу думать:

1: Создайте скалярную функцию SQL, которая выполняет запрос и возвращается немного. Это можно было затем назвать непосредственно из клиентского приложения .NET с помощью "ТЕКСТА" объект SqlCommand, и это возвратит bool из "ExecuteScalar ()" метод.

2: Создайте хранимую процедуру, как описано в технических спецификациях. Это затем назвали бы из приложения.Net Client нормальным способом и возвратит DataTable с одной строкой и отдельным столбцом, который содержит битовое значение.

Мне опция каждый кажется лучшим. Однако что-то позади моей головы говорит, что это не такая хорошая идея.

Вы могли дать свои мнения, и справка уменьшают мои проблемы?:)

С наилучшими пожеланиями, Ian

10
задан Sk93 10 June 2010 в 09:32
поделиться

4 ответа

Вызов скалярной функции - абсолютно правильное решение.

7
ответ дан 3 December 2019 в 14:52
поделиться

Я полагаю, это зависит от логики, которую должна выполнять соответствующая функция базы данных (sp / udf).

Если, например, нас интересует, сколько раз выполнялась конкретная функция db, нам определенно необходимо выполнить некоторые манипуляции с данными и обновления в различных таблицах. Следовательно, нам придется использовать здесь сохраненные процессы. Если это простой поиск, подойдет и udf.

1
ответ дан 3 December 2019 в 14:52
поделиться

Выполните хранимую процедуру, используя метод ExecuteScalar () . Затем вы можете преобразовать результат в логическое значение.

например

   SqlConnection con = new SqlConnection(connectionString);
    SqlCommand com = new SqlCommand("Execute dbo.usp_MyStoredProc", con);
    return (Boolean)com.ExecuteScalar();
14
ответ дан 3 December 2019 в 14:52
поделиться

Решение этой проблемы с помощью хранимой процедуры лучше в долгосрочной перспективе, поскольку она более гибкая и адаптируемый

0
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: