3

我在 SQL Server 2012 中有一个自定义标量函数。它需要 2 个浮点数并返回一个 nvarchar。在 SQL Server 中测试并运行。

我还没有找到任何关于如何从 node-mssql 调用它的示例。我所做的尝试失败了:

TypeError: Cannot set property 'value' of undefined

这似乎是 node-tedious 包中的一个错误......所以可能 tedious 还不支持它。

我有一个工作版本,它调用带有两个输入参数的存储过程,返回一个记录集,但由于我真的只需要一个值,它似乎已经结束了,executeScalar 调用在这里很有用(我习惯来自.NET)。

4

1 回答 1

7

您可以跳过 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'
于 2015-09-07T15:18:35.213 回答