c# - SqlDataAdapter - 结合存储过程和带参数的 Select 语句

标签 c# asp.net sql-server stored-procedures

使用 SqlDataAdapter(或其他 ASP.NET 技术)是否可以对存储过程进行单个 SQL 调用并运行 select 语句?两者都有参数。

我知道您可以组合多个 select 语句...

DataSet ds = new DataSet();

using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();

    SqlDataAdapter cmd = new SqlDataAdapter("SELECT id FROM Table1 WHERE id=@myid; SELECT id FROM Table2", connection);
    cmd.SelectCommand.Parameters.AddWithValue("@id",myid);
    cmd.Fill(ds);
}

并且您可以用类似的方式调用存储过程...

DataSet ds = new DataSet();

using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();
    SqlDataAdapter cmd = new SqlDataAdapter("myStoredProcedure", connection);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.SelectCommand.Parameters.AddWithValue("@id",myid);
    cmd.Fill(ds);
}

但我想将两者合并为一个调用。

我需要将存储过程和选择语句分开。我不想将它们组合成一个存储过程。

感谢您的帮助!

最佳答案

诀窍是 exec功能。

来自文档

It Executes a command string or character string within a Transact-SQL batch, or one of the following modules: system stored procedure, user-defined stored procedure, CLR stored procedure, scalar-valued user-defined function, or extended stored procedure.

所以你可以这样做:

DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();
    SqlDataAdapter cmd = new SqlDataAdapter("SELECT id FROM Table1 WHERE id=@myid; Exec myStoredProcedure @myid", connection);
    cmd.SelectCommand.Parameters.AddWithValue("@myid",myid);
    cmd.Fill(ds);
}

关于c# - SqlDataAdapter - 结合存储过程和带参数的 Select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117663/

相关文章:

javascript - 如何打印带有黑色背景图像的白色文本

c# - ASP.NET MVC - 模型绑定(bind)不同实体中具有相同名称的多个参数 - GET 和 POST 不同吗?

SQL Server 选择行

C# 与 SQL Server SELECT WHERE IN 与数据列表

c# - Unity - 如何从父游戏对象检测子对象的碰撞?

c# - 指定的转换无效 - 对象为长

c# - Entity Framework 中的 Linq 查询错误

asp.net - 在asp.net中通过Web API上传大文件

sql - 插入上一行

c# - 如何通过 Pinvoke 传递指向结构的指针?