Пользовательские функции SQL в корпоративной библиотеке

StackOverflow https://stackoverflow.com/questions/256804

Вопрос

Есть ли способ выполнить пользовательские функции 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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top