У меня есть эта хранимая процедура:хранимой процедуры через службу данных
CREATE OR REPLACE PROCEDURE GET_NEXT_ID(NEXTID OUT INTEGER)
IS
BEGIN
SELECT SQC_RS_PEDIDO.NEXTVAL INTO NEXTID FROM DUAL;
END GET_NEXT_ID;
Чтобы получить следующий идентификатор. Затем я добавил эту хранимую процедуру в службу данных и импортированную функцию.
Автоматический код, который создается на моей службе данных является:
public ObjectResult<Nullable<global::System.Decimal>> GET_NEXT_ID(ObjectParameter nEXTID)
{
return base.ExecuteFunction<Nullable<global::System.Decimal>>("GET_NEXT_ID", nEXTID);
}
Затем выставить это на моей службе данных я использовал:
[WebGet]
public ObjectResult<decimal?> GET_NEXT_ID()
{
return this.CurrentDataSource.GET_NEXT_ID(new ObjectParameter("NEXTID", typeof(Decimal)));
}
Но я получаю исключение:
The data reader returned by the store data provider does not have enough columns for the query requested.
Что я делаю неправильно?
Не могли бы вы привести пример? –
Я не понимаю синтаксис базы данных (Oracle?), Но в основном в стандартном SQL я бы сделал: выберите NEXTVAL. Вы должны выбрать идентификатор из БД, а не возвращать его как выходную переменную и не возвращать его с помощью инструкции RETURN, чтобы заставить ваш код WCF работать. Или измените код WCF, но я точно не знаю, какой синтаксис для ExecuteFunction тоже изменит. –