遇到了我編寫了一些可在我的沙箱中工作的問題,包括指向外部數據庫但在我的發佈環境中無法運行的問題。從T-SQL返回的INT在發佈環境中未評估
我想要做的是從存儲過程獲得INT結果。我曾嘗試讓程序返回INT,並且在任何情況下都將其設置爲OUTPUT參數,但沒有運氣。請注意,這也適用於我自己的沙箱,但不適用於使用Visual Studio部署功能部署的已發佈環境。
這裏是C#評估整數返回代碼:
var returnVal = new SqlParameter("@ReturnValue", SqlDbType.Int)
{
IsNullable = true,
Direction = ParameterDirection.ReturnValue
};
var sqlParams = new List<SqlParameter>
{
new SqlParameter("@Host", dataEntryModel.Host),
new SqlParameter("@PurchaseOrderNumberUser", dataEntryModel.PurchaseOrderNumberUser),
new SqlParameter("@PharmacyId", dataEntryModel.BatchUploadPharmacyId),
new SqlParameter("@NDCTable", table),
new SqlParameter("@LastModifiedById", dataEntryModel.LastModifiedById),
new SqlParameter("@POSourceTypeId", dataEntryModel.PurchaseOrderSourceType),
new SqlParameter("@PoId", dataEntryModel.PurchaseOrderId),
returnVal
};
using (var connection = new SqlConnection(Database.ConnectionString))
{
connection.Open();
using (var command = new SqlCommand("AdminApp._spBatchUploadNDCToPurchaseOrder"))
{
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddRange(sqlParams.ToArray());
// Setting command timeout to 120 second - Added by Tom Miller 10-31-14
command.CommandTimeout = 600;
command.ExecuteScalar();
returnPurchaseOrderNumber = Convert.ToInt32(command.Parameters["@ReturnValue"].Value);
}
}
return returnPurchaseOrderNumber;
我不知道這是爲什麼不能在其他環境中工作。我已將沙箱指向我的部署環境中使用的Development數據庫,並且在運行時顯示正在評估的返回碼爲0,這是不正確的。
已解決經過一番測試,我完全偏離了方向。我的數據設置正確,但是由於SQL方面的體系結構差而導致DEV中的數據佈局有所不同。謝謝你,併爲時間道歉。
是這實際上訪問的外部使用''returnPurchaseOrderNumber我會宣佈這個之外呢,使這條線將是有效的'返回returnPurchaseOrderNumber'聲明最初使用這個外部的變量沒有被聲明爲''@ReturnValue'' – MethodMan
我可以確認它是。 returnPurchaseOrderNumber在上面聲明並因此可訪問。 – Garbonauta
另外,發表評論。這應該是一個ExecuteNonQuery。沒有選擇行。原來是這樣,但顯然我粘貼的代碼是在修補後。 – Garbonauta