Пользовательские функции SQL в корпоративной библиотеке
-
05-07-2019 - |
Вопрос
Есть ли способ выполнить пользовательские функции SQL с помощью библиотеки Enterpise?Я пробовал Database.ExecuteScalar() но по какой-то причине он возвращает null.
Это моя функция:
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
DbCommand cmd = db.GetStoredProcCommand("FunctionName");
db.AddInParameter(cmd, "Value1", DbType.String, Param1Value);
db.AddInParameter(cmd, "Value2", DbType.String, Param2Value);
return Convert.ToBoolean(db.ExecuteScalar(cmd));
Здесь используется db.Метод ExecuteScalar(cmd) возвращает значение null.Этого не происходит с Хранимыми процедурами.
Кстати, я использую версию 4.0
Спасибо.
Решение
Вы должны создать оператор select, который выбирает результат из функции и выполняет это.
"ВЫБРАТЬ * ИЗ functionName(@Value1, @Value2)"
Или вы можете обернуть вызов своей функции в процедуру и вызвать процедуру, я предпочитаю это.
Другие советы
Для скалярных функций это было бы
SELECT FuncName(@Param1)
принимая во внимание, что табличная функция была бы
SELECT * FROM FuncName(@Param1)
Не связан с StackOverflow