Как вызвать скалярную функцию SQL Server, используя пакет mssql для nodejs?

У меня есть пользовательская скалярная функция в SQL Server 2012. Она принимает 2 числа с плавающей запятой и возвращает nvarchar. Протестировано и работает внутри SQL Server.

Я не нашел примеров того, как его вызывать из node-mssql. Попытки, которые я сделал, терпят неудачу:

TypeError: Cannot set property 'value' of undefined

Это похоже на ошибку пакета node-tedious... так что, возможно, tedious еще не поддерживает его.

У меня есть рабочая версия, которая вызывает хранимую процедуру с двумя входными параметрами, которая возвращает набор записей, но, поскольку мне действительно нужно только одно значение, кажется, что это больше, чем kill, и здесь был бы полезен вызов executeScalar (что-то, к чему я привык) имея из .NET).


person Dude 2.5    schedule 06.09.2015    source источник


Ответы (1)


Вы можете пропустить настройку ввода/вывода в node-mssql и просто выбрать скалярную функцию, как обычно.

Функция

CREATE FUNCTION [dbo].[udfTestScalar] (
    -- Add the parameters for the function here
    @F1 FLOAT
    ,@F2 FLOAT
    )
RETURNS NVARCHAR(100)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @N1 NVARCHAR(100)

    -- Add the T-SQL statements to compute the return value here
    SET @N1 = N'Hi there'

    RETURN @N1
END

index.js

var sql = require('mssql');

var config = {
    user: 'user',
    password: 'password',
    server: 'localhost',
    database: 'db'
};

var connection = new sql.Connection(config, function(err) {
    var request = new sql.Request(connection);
    request.query("SELECT dbo.udfTestScalar(12345.123, 12345.456) as result", function(err, recordsets) {
        console.log(recordsets[0].result);
    });
});

Вывод

% node index.js
'Hi there'
person duffn    schedule 07.09.2015