【发布时间】:2015-08-17 15:19:27
【问题描述】:
这是我的存储过程:
ALTER proc [Core].[up_ExternalTradeInsert]
@ExecID char(16),
@SecondaryExecID char(16),
@SecurityID int,
@SecurityIDSource int,
@LastQty int,
@LastPx decimal(12, 6),
@TransactTime datetime2(3),
@Side bit, --0 Sell 1-Buy
@OrderID char(16),
@ClOrdID char(20),
@Account int,
@SenderId int
as
begin
set nocount on
insert Core.ExternalTrade(ExecID, SecondaryExecID, SecurityID, SecurityIDSource, LastQty, LastPx, TransactTime, Side, OrderID, ClOrdID, Account)
values (@ExecID, @SecondaryExecID, @SecurityID, @SecurityIDSource, @LastQty, @LastPx, @TransactTime, @Side, @OrderID, @ClOrdID, @Account)
return @@rowcount
end
这是我从 c# 调用 sp 的方式:
using (SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["Connection"]))
{
conn.Open();
SqlCommand cmd = new SqlCommand("Core.up_ExternalTradeInsert", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@ExecID", execID));
cmd.Parameters.Add(new SqlParameter("@SecondaryExecID", secondaryExecID));
cmd.Parameters.Add(new SqlParameter("@SecurityID", securityID));
cmd.Parameters.Add(new SqlParameter("@SecurityIDSource", securityIDSource));
cmd.Parameters.Add(new SqlParameter("@LastQty", lastQty));
cmd.Parameters.Add(new SqlParameter("@LastPx", lastPx));
cmd.Parameters.Add(new SqlParameter("@TransactTime", transactTime));
cmd.Parameters.Add(new SqlParameter("@Side", side));
cmd.Parameters.Add(new SqlParameter("@OrderID", orderID));
cmd.Parameters.Add(new SqlParameter("@ClOrdID", clOrdID));
cmd.Parameters.Add(new SqlParameter("@Account", account));
cmd.Parameters.Add(new SqlParameter("@SenderId", senderId));
int result = cmd.ExecuteNonQuery();//.ExecuteNonQuery();
}
ogf 结果变量的值始终为 -1,但我看到 sql 语句效果很好。当我在 MSSQl Management Studio 中执行 sp 时,我看到返回值为 1。为什么?我究竟做错了什么?我必须从存储过程中获取真正的返回值。
谢谢,
【问题讨论】:
-
ConfigurationManager.AppSettings["Connection"])是一个良好且正确的连接字符串吗? -
您考虑过使用
OUTPUT参数吗? SP 的返回值旨在成为完成状态。 -
使用
int result = (int)cmd.ExecuteScalar();,它应该可以工作。 ExecuteNonQuery 不会返回一些东西。 -
尝试使用输出参数:stackoverflow.com/a/10908586/673707
标签: c# sql-server tsql stored-procedures ado.net