C# 调用具有Insert语句并返回表的SP

C# 调用具有Insert语句并返回表的SP,c#,asp.net,sql-server,ado.net,C#,Asp.net,Sql Server,Ado.net,是否可以调用一个存储过程,该存储过程将首先插入详细信息,最后返回一个表。目前,我已经为它编写了两个存储过程:一个用于插入,另一个用于获取详细信息。现在我试着同时做这两件事 我使用ExecuteScalar插入并使用ExecuteDataSet进行选择。您编写了这样一个过程 CREATE PROCEDURE SP_Name ( //PARAMETES ) AS BEGIN //INSERT STATEMENT //SELECT STATEMENT END 调用ExecuteDataSet

是否可以调用一个存储过程,该存储过程将首先插入详细信息,最后返回一个表。目前,我已经为它编写了两个存储过程:一个用于插入,另一个用于获取详细信息。现在我试着同时做这两件事


我使用ExecuteScalar插入并使用ExecuteDataSet进行选择。

您编写了这样一个过程

CREATE PROCEDURE SP_Name
(
 //PARAMETES
)
AS
BEGIN

//INSERT STATEMENT

//SELECT STATEMENT

END

调用ExecuteDataSet

如果存储过程使用SELECT返回数据,当然,我认为您需要读取该数据,那么您应该使用SqlDataAdapter及其Fill方法,或者使用SqlCommand上的ExecuteReader使用SqlDataReader

执行者:

SqlDataAdapter.Fill:


or.Fill将在不查看存储过程的情况下执行存储过程,但他们希望返回某种表格数据以在其上循环

我已经创建了SP。但我的问题是从C代码调用该SP。与论坛网站不同,我们不使用感谢、任何感谢帮助或签名。看见
SqlConnection cn = new SqlConnectio(...)
SqlCommand cmd = new SqlCommand("procName", cn)
 {
     cmd.CommandType = CommandType.StoredProcedure;
     cn.Open();
     cmd.ExecuteScalar();
 }
using(SqlConnection cn = new SqlConnection(...))
using(SqlCommand cmd = new SqlCommand(procName, cn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cn.Open()
    using(SqlDataAdapter da = new SqlDataAdapter(cmd)
    {
        DataTable dt = new DataTable();
        da.Fill(dt);

        // DataTable filled with the data returned by the last SELECT in your SP
        ......
    }    
}
SqlConnection cn = new SqlConnectio(...)
SqlCommand cmd = new SqlCommand("procName", cn)
 {
     cmd.CommandType = CommandType.StoredProcedure;
     cn.Open();
     cmd.ExecuteScalar();
 }