使用 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/