C# SqlDataAdapter-将存储过程和Select语句与参数组合在一起

C# SqlDataAdapter-将存储过程和Select语句与参数组合在一起,c#,asp.net,sql-server,stored-procedures,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 SqlDat

使用
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);
}
但我想把这两个电话合并成一个电话

我需要将存储过程和select语句分开。我不想将它们合并到一个存储过程中

谢谢你的帮助

诀窍在于函数

从文件中

它在Transact-SQL中执行命令字符串或字符串 批处理,或以下模块之一:系统存储过程, 用户定义存储过程,CLR存储过程,标量值 用户定义的函数或扩展存储过程

所以你可以这样做:

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);
}

谢谢你,胡安!所以,如果我想将两个参数传递给我的存储过程,它会像这样。。。“Exec myStoredProcedure@myid,@myid2”此外,如果其中一个参数是用户定义的表类型,该怎么办?是的,您必须传递多语句命令所需的所有参数。