我不确定如何将字符串请求格式化为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'
答案 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);
});