The request for procedure 'x' failed because 'x' is a table valued function object. при выполнении процедуры

При выполнении процедуры в Node.js:

The request for procedure 'x' failed because 'x' is a table valued function object.

Для работы с MSSQL использую mssql.

Функция с табличным значением принимает id и возвращает таблицу. Выполняю вот так:

export const dboUdfConfigCompliance = async (id: string) => {
try {
  const pool = await connectDB();
  return await pool
   ?.request()
   .input('SrvId', sql.Int, id)
   .execute('[dbo].[udfConfigCompliance]');
 } catch (err: any | unknown) {
  throw new HandlerErr(`Ошибка выполнения процедуры [dbo].[udfConfigCompliance] ${err.message}`);
 }
};

Предистория - старый фронт был на C# и запросы к бд были напрямую с фронта. Я переношу логику работы с БД на node.js


Ответы (1 шт):

Автор решения: Александр

Нужно выполнять процедуру через .query, а не .execute.

`export const dboUdfConfigCompliance = async (id: string) => {
    try {
        const pool = await connectDB();
        return await pool
    ?.request()
    .input('SrvId', sql.Int, id)
    .query('SELECT ....);
    } catch (err: any | unknown) {
        throw new HandlerErr(`Ошибка выполнения процедуры [dbo].[udfConfigCompliance] ${err.message}`);
    }
};
};`
→ Ссылка