【问题标题】:Passing parameter to SPROC that returns location specifc data?将参数传递给返回特定位置数据的 SPROC?
【发布时间】:2018-05-03 23:31:41
【问题描述】:

我有一个使用静态变量 (@Location) 创建的存储过程。 我正在尝试创建一个将 LocationID 参数传递给存储过程的 C# 应用程序。需要将参数传递两次(Location1 和 Location2)。到目前为止,我所拥有的只是以下代码,我不确定如何循环它,或者它是否正确编写?

using (Conn)
  {
    SqlCommand cmd = new SqlCommand("[dbo].[sp_EXAMPLESPROC]",Conn);
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter LocationParam = cmd.Parameters.AddWithValu("@LocationID", "1");
    LocationParam.SqlDbType = SqlDbType.Structured;

【问题讨论】:

  • 循环什么?你只需要添加你的其他参数。
  • 嗯,我需要循环的原因是因为我需要SP运行一次,将数据拉入应用程序,然后应用程序将创建一个文件将Location1数据放入,然后运行AGAIN 与 Location2 参数(然后将被传递到不同的文件)。
  • 或者我想我不必循环它,我可以调用该方法两次?现在的问题是——如何编写将参数值传递给存储过程中的静态变量的方法?
  • 我发布了一个答案来解决您的问题,尽管我不确定您指的是哪个静态变量。
  • 对不起,“静态变量”是我试图将参数传递给的存储过程中的变量。谢谢您的帮助!这绝对让我朝着正确的方向前进。

标签: c# sql variables stored-procedures parameters


【解决方案1】:

LocationID1LocationID2 参数添加到存储过程,然后 这样做

 cmd.Parameters.Add(@LocationID1", SqlDbType.VarChar).Value = "1";
 cmd.Parameters.Add(@LocationID2", SqlDbType.VarChar).Value = "2";

这应该可以工作

【讨论】:

  • 谢谢!但是,SP 只有一个声明的变量 (@LocationID)。我将如何格式化此代码以循环,以便它分别传递两个值并使用结果创建单独的数据表?例如,我需要 SP 使用 LocationID1 运行,将该数据存储在一个表中,然后使用 LocationID2 再次运行以填充另一个表。
【解决方案2】:

假设您将代码放入名为StoreLocation() 的方法中。你会让它接受一个参数'locationId'(它真的像你一样是一个字符串吗?)像这样:

private void StoreLocation(string locationId)
{
    using (Conn)
    {
        SqlCommand cmd = new SqlCommand("[dbo].[sp_EXAMPLESPROC]",Conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter LocationParam = cmd.Parameters.AddWithValue("@LocationID", locationId);
        LocationParam.SqlDbType = SqlDbType.Structured;
        cmd.ExecuteNonQuery(); // Or however your sproc works.
    }
}

然后你只需调用它两次或使用循环或任何你想要的:

private void SomeCallerMethod()
{
    // Whatever other code you have.

    StoreLocation("1");
    StoreLocation("2");

    // More other code.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多