从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

从SQL Server表返回值时出现问题

我觉得自己很愚蠢,但答案很简单。

在调试时,我深入查看了c2参数。我一直认为"FLOAT"是rzd数据类型。这似乎很奇怪,所以我开始调查我到底是从哪里提取数据的。更令人困惑的是,我在本地机器上有两个数据库,在我们网络的开发服务器上有一个。我以为我仍然被本地机器钩住了,但事实证明我是从网络数据库中提取的。

删除网络上的表,从本地计算机和BAM重新导入!

突然间它起作用了。想象一下。。。

非常抱歉,但谢谢大家的帮助。