2

我遇到了一个返回行数的存储过程,但不确定如何在这里读取行数,

存储过程是:

CREATE PROCEDURE [dbo].[Document_Exists]
(
    @Url varchar(255)
)
AS
    SET NOCOUNT ON;

    SELECT COUNT(*) AS Rows 
    FROM Document_Instances 
    WHERE Url = @Url

执行为

EXEC @return_value = [dbo].[Document_Exists]
     @SourceSiteUrl = N'https://cc23.dev.com/portal'

SELECT 'Return Value' = @return_value

试图用这段代码阅读它

SqlCommand cmd1 = new SqlCommand("Document_Exists", conn);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add(new SqlParameter("@Url", url));
SqlDataReader rdr1 = cmd.ExecuteReader();

while (rdr1.Read())
{

不知道下一步该做什么

4

4 回答 4

4

当您从 proc 返回单个值时,使用 SqlDataReader 的意义何在?

SqlCommand cmd1 = new SqlCommand("Document_Exists", conn); 
cmd1.CommandType = CommandType.StoredProcedure; 
cmd1.Parameters.Add(new SqlParameter("@Url", url)); 
int rows = Convert.ToInt32(cmd.ExecuteScalar()); 
于 2012-07-27T14:38:16.473 回答
2

尝试

int rows = 0;
if(rdr1.Read()) {
    rows = (int) rdr1["Rows"];
}
于 2012-07-27T14:31:06.957 回答
1
int totalRows=0;
if(rdr1.Read())
{
    totalRows=  rdr1.GetInt32(rdr1.GetOrdinal("Rows"));
}

如果您只重新调整一个值,我建议您使用ExecuteScalar

于 2012-07-27T14:35:29.580 回答
1
int rowCount = dataReader.Cast<object>().Count();
于 2013-12-19T10:14:38.767 回答