【问题标题】:Column names returned by a stored Procedure存储过程返回的列名
【发布时间】:2014-08-24 06:48:25
【问题描述】:

我想显示存储过程可以返回的列名,并允许用户选择他们想要的列名,然后执行存储过程并仅返回所选列的数据。有没有办法只获取存储过程返回的列名而不实际执行存储过程/执行前

【问题讨论】:

  • 我认为你必须修改存储过程,以便通过传递一个标志它可以只显示没有数据的列名。
  • 我想你可以用动态 SQL 来做到这一点。让用户从前端的列表中选择,连接所有列名并传递给存储过程并使用sp_executesql 运行查询。
  • 这种功能最好由 VIEW 处理。然后,您可以在客户端构建一些动态构建 SELECT 语句的东西。
  • 我认为有两种方式。一种是您可以将选定的列名传递给存储过程并使用动态查询返回结果。其他选项是在显示结果期间,您只显示选定的列,而不是存储过程中的所有列。这取决于你如何显示它
  • 这个存储过程是从哪里调用的?

标签: sql-server


【解决方案1】:

使用 DeriveParameters 方法从存储过程中获取参数

public void GetParameter()
{

    SqlConnection con= new SqlConnection("sqlconnectionstring");
    SqlCommand cmd = new SqlCommand("storeprocedurename", con);
    cmd.CommandType = CommandType.StoredProcedure;
    con.Open();    
    SqlCommandBuilder.DeriveParameters(cmd);
    foreach (SqlParameter p in cmd.Parameters)
    {
       // get the parameter name by p.ParameterName
    }
}

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多