从SQL Server表返回值时出现问题
本文关键字:问题 返回值 SQL Server | 更新日期: 2023-09-27 17:59:39
我有一个应用程序,它应该接受十进制输入,推入存储过程,并返回一个char值供应用程序使用。
出于某种原因,我的所有其他存储过程似乎都可以正常工作,但这一个特定的存储过程根本不工作。
最初,输入是以下拉列表的形式出现的,但是列表中的值不正确。
例如:SQL Server表中的0.975在下拉列表中显示为1.000。1.025不知怎么变成了1.050。1.075变为2.000
所以我放弃了下拉列表,选择了一个文本框。我仍然没有收到正确的返回值。事实上,我根本没有得到任何价值。
这是我的代码:
形式:
<asp:Label ID="Label2" runat="server" Text="Select RZD: "></asp:Label>
<asp:TextBox ID="rzdTB" runat="server"></asp:TextBox>
<asp:Label ID="rzdFSLabel" runat="server" Text="Label"></asp:Label>
代码背后:
fileNameGenerator fNG = new fileNameGenerator();
fNG.rzd = Convert.ToDouble(rzdTB.Text);
fNG.fileGenerator();
rzdFSLabel.Text = fNG.rzdfsOUT;
Label13.Text = fNG.bcfsOUT + fNG.rzdfsOUT + fNG.anglefsOUT + fNG.powerfsOUT;
lBO.fileName = fNG.bcfsOUT + fNG.rzdfsOUT + fNG.anglefsOUT + fNG.powerfsOUT;
fileNameGenerator()
//declare rzd variable - convert to double
//declare rzdSymbol as the output
c2.Parameters.AddWithValue("@rzd", SqlDbType.Float).Value =rzd;
SqlParameter rzdSymbol = new SqlParameter("@rzdSymbol", SqlDbType.VarChar);
rzdSymbol.Size = 2;
rzdSymbol.Direction = ParameterDirection.Output;
c2.Parameters.Add(rzdSymbol);
//open the connection string and execute the stored procedures
conn.Open();
c1.ExecuteNonQuery();
c2.ExecuteNonQuery();
c3.ExecuteNonQuery();
c4.ExecuteNonQuery();
conn.Close();
bcfsOUT = c1.Parameters["@bcFS"].Value.ToString();
//string sdfsOUT to label2
rzdfsOUT = c2.Parameters["@rzdSymbol"].Value.ToString();
存储过程:
ALTER PROCEDURE dbo.getRZDSymbol
(
@rzd decimal(10,5),
@rzdSymbol varchar(2) OUTPUT
)
AS
SET NOCOUNT ON
SELECT @rzdSymbol = rzdSymbol
FROM fileSymbolTable
WHERE rzd = @rzd
我觉得自己很愚蠢,但答案很简单。
在调试时,我深入查看了c2参数。我一直认为"FLOAT"是rzd数据类型。这似乎很奇怪,所以我开始调查我到底是从哪里提取数据的。更令人困惑的是,我在本地机器上有两个数据库,在我们网络的开发服务器上有一个。我以为我仍然被本地机器钩住了,但事实证明我是从网络数据库中提取的。
删除网络上的表,从本地计算机和BAM重新导入!
突然间它起作用了。想象一下。。。
非常抱歉,但谢谢大家的帮助。