是否可以调用存储过程,该存储过程将首先插入详细信息,最后将返回一个表。目前我已经为它编写了两个存储过程:一个用于插入,另一个用于获取详细信息。现在我试图同时做两件事。
我使用ExecuteScalar
进行插入,ExecuteDataSet
进行选择。
答案 0 :(得分:2)
如果您的存储过程使用SELECT返回数据(当然,我认为您需要读取该数据),那么您应该使用SqlDataAdapter及其Fill方法或SqlDataReader使用SqlCommand上的ExecuteReader
<强>的ExecuteReader:强>
using(SqlConnection cn = new SqlConnection(...))
using(SqlCommand cmd = new SqlCommand(procName, cn))
{
cmd.CommandType = CommandType.StoredProcedure;
cn.Open()
using(SqlDataReader r = cmd.ExecuteReader())
{
while(r.Read())
{
// read every row and use the field values .....
}
}
}
SqlDataAdapter.Fill:
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
......
}
}
SqlCommand.ExecuteReader或SqlDataAdapter。填充将执行存储过程而不查看存储过程的作用,但是他们希望某些表格数据将返回到它上面循环
答案 1 :(得分:0)
你写了这样的程序
CREATE PROCEDURE SP_Name
(
//PARAMETES
)
AS
BEGIN
//INSERT STATEMENT
//SELECT STATEMENT
END
并调用ExecuteDataSet()
答案 2 :(得分:-2)
SqlConnection cn = new SqlConnectio(...)
SqlCommand cmd = new SqlCommand("procName", cn)
{
cmd.CommandType = CommandType.StoredProcedure;
cn.Open();
cmd.ExecuteScalar();
}