使用SqlDataAdapter
(或其他ASP.NET技术),是否可以对存储过程进行单个SQL调用并运行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语句分开。我不想将它们组合成一个存储过程。
感谢您的帮助!
答案 0 :(得分:2)
技巧是exec功能。
来自文档
它在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);
}