无法找出使用edge-sql参数调用存储过程的语法

时间:2015-12-18 13:40:20

标签: sql-server edge.js

我不确定如何将字符串请求格式化为edge-sql以执行需要参数的存储过程。如果我将存储过程更改为不使用参数,只需发送exec sp_III_UpdateOperMgr即可正确执行。

以下是我在edge-sql中使用的语法,它返回错误

  

"无法找到存储过程' sp_III_UpdateOperMgr   @ quoteNumber,@采购单号码'"

var updateOpMgrSql  = edge.func('sql',{
    connectionString: GM_CONNECTION_STRING,
    source:function () {
        /*
         exec sp_III_UpdateOperMgr  @quoteNumber,@poNumber
         */
    },
});

以下是MS SQL Server Management Studio中正确执行的语法 exec sp_III_UpdateOperMgr @quoteNumber='121715JM-1',@innovationJobNumber='999999'

2 个答案:

答案 0 :(得分:0)

假设存储过程本身的参数是@quoteNumber和@poNumber,你可以尝试:

var updateOpMgrSql  = edge.func('sql',{
connectionString: GM_CONNECTION_STRING,
source:function () {
    /*
     exec sp_III_UpdateOperMgr  @quoteNumber=@quoteNumberParam,@poNumber=@poNumberParam
     */
},
});

然后使用:

调用updateOpMgrSql函数
updateOpMgrSql({ quoteNumberParam: 10, poNumberParam: 15 }, function (error, result) {
    if (error) throw error;
    console.log(result);
});

答案 1 :(得分:0)

我为我工作。此语法也适用。您不必在sql代码中编写参数。您只需要将它们包括在javascript参数中,如下所示。这是我的存储过程:

create procedure [dbo].[p_Test]
    @p nvarchar(max) = null
as
begin 
    select * from [registration].[User] 
    where UserName = @p
end

您可以交换上面示例中的表和参数以适合您的特定数据库。 这是我的边缘代码:

var getUser = edge.func('sql', function () {
    /*
    exec [dbo].[p_Test] 
    */
});

getUser({p:'SomeUserName'}, function (error, result) {
    if (error) throw error;
    console.log(result);
});