2015-12-18 49 views
0

參數我不知道如何格式化字符串請求邊緣SQL爲了執行需要參數的存儲過程。如果我更改存儲過程不使用參數,只需發送exec sp_III_UpdateOperMgr它正確執行。想不通的語法調用存儲過程與邊緣SQL

下面是我使用的邊緣-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

假設在存儲過程的參數本身是@quoteNumber和@poNumber你可以嘗試:

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

然後調用updateOpMgrSql函數:

updateOpMgrSql({ quoteNumberParam: 10, poNumberParam: 15 }, function (error, result) { 
    if (error) throw error; 
    console.log(result); 
}); 
+0

看起來像它是在2013年添加在[這裏](https://github.com/tjanczuk/edge-sql/commit/1ddb418a77e391673a5e3d97ee7769a2fba3e73e)。如果它不需要參數,該過程也適用。 –

+0

所以你怎麼打電話updateOpMgrSql?像'updateOpMgrSql({quoteNumber:10,採購單號碼:15}?...' – strickt01

+0

我已經編輯我的答案,你的鏈接... – strickt01

0

不得不對SP名稱後的第一空空間加分,我不知道這是否有更好的方式,但我最終編輯升C代碼中使用了由JavaScript.I然後坐數組中的第一項將是過程的實際名稱。

以前是包括所有需要的SP名稱時傳遞的參數只有 commandString.Substring(5).TrimEnd()

後,我通過在第一白空間 commandString.Substring(5).Split(' ')[0].TrimEnd()

async Task<object> ExecuteStoredProcedure( string connectionString, string commandString, IDictionary<string, object> parameters) { using (SqlConnection connection = new SqlConnection(connectionString)) { var spName = commandString.Substring(5).Split(' ')[0].TrimEnd(); SqlCommand command = new SqlCommand(spName, connection) { CommandType = CommandType.StoredProcedure }; using (command) { return await this.ExecuteQuery(parameters, command, connection); } } } 分割字符串得到數組中的第一項