Доброе день, возник вопрос как из функции, которая возвращает таблицу передать параметры и вернуть её в формате ESQ (либо же DataTable, который можно преобразовать в ESQ)?

Нравится

1 комментарий

Никак. Такой операции проделать нельзя, так как ESQ работает только с моделями(схемами), а в хранимой процедуре можете вытягивать любые колонки с любых таблиц, которые даже не являются схемами конфигурации.

Ответил на Ваш предыдущий вопрос.

Нужно реализовывать фильтрацию сразу на ESQ без применения хранимых процедур и функций.

Показать все комментарии

Добрый день,

Возможно ли создать и вызвать БДшную функцию на сервере,

Например создать функцию(Через CREATE FUNCTION ) и добавить ее в скрипты в пакете

и потом как нибудь вызвать ее и получить то что она возвращает?

 

Заранее спасибо!

Нравится

5 комментариев

так вам нужна функция или хранимка? в любом случае вот тема. Как вызвать из js кода свой сервис можно посмотреть на sdk / как добавить кусок C# кода в БП - элемент "задание-сценарий". Ну и в C# коде вызываете хранимку, в хранимке делаете что угодно, результат читаете с помощью datareader'а и далее по бизнес логике...

Варфоломеев Данила,

Спасибо за ссылку, мне нужна функция, но по идее процедурой тоже можно обойтись

Можно вызвать хранимую процедуру. Правильный вызов процедуры (пример):

DataValueTypeManager dataValueTypeManager =UserConnection.DataValueTypeManager; 

var dateTimeValue = new DateTime(2009, 01, 02, 22, 12, 0);

                    Stream stream = newMemoryStream(Encoding.Unicode.GetBytes("Тест большого бинарного объекта"));

                    var textDataValueType = newTextDataValueType(dataValueTypeManager);

                    var guidDataValueType = newGuidDataValueType(dataValueTypeManager);

                    var integerDataValueType = newIntegerDataValueType(dataValueTypeManager);

                    var floatDataValueType = newFloat2DataValueType(dataValueTypeManager);

                    var booleanDataValueType = newBooleanDataValueType(dataValueTypeManager);

                    var dateTimeDataValueType = newDateTimeDataValueType(dataValueTypeManager);

                    var idValue = new Guid("{BCDB8392-55BC-472A-A49D-22A975E0BEF6}");



                    StoredProcedure storedProcedure =

                           new StoredProcedure(Page.UserConnection,"tsp_TestStoredProcedure")

                           .WithParameter("IdParameter", idValue)

                           .WithVarParameter("VarIdParameter", idValue, guidDataValueType)

                           .WithParameter("TextParameter", "Украина")

                           .WithVarParameter("VarTextParameter", "Украина", textDataValueType)

                           .WithParameter("IntegerParameter", 10)

                           .WithVarParameter("VarIntegerParameter", 10, integerDataValueType)

                           .WithParameter("FloatParameter", 3.14)

                           .WithVarParameter("VarFloatParameter", 3.14, floatDataValueType)

                           .WithParameter("BooleanParameter", true)

                           .WithVarParameter("VarBooleanParameter", false, booleanDataValueType)

                           .WithParameter("DateTimeParameter", dateTimeValue)

                           .WithVarParameter("VarDateTimeParameter", dateTimeValue, dateTimeDataValueType)

                           .WithParameter("BinaryParameter", stream)

                           .WithVarParameter("VarBinaryParameter", stream)

                           .WithOutputParameter("ResultParameter", textDataValueType) as StoredProcedure;

storedProcedure.PackageName = Page.UserConnection.DBEngine.SystemPackageName;

storedProcedure.Execute();



Функция вызывается аналогично.

Add comment

Антон Малий,

Я понял, большое спасибо

Вот для функции:

public virtual string GenerateCardCVC(Guid cardId) {
	var udf = new UserDefinedFunction(UserConnection, "fn_GenerateCardCVC");
	udf.WithParameter("pCardId", cardId);
	return udf.ExecuteScalar<string>();
}

 

Показать все комментарии