我遇到了这个问题。我有一个存储过程,执行后返回6行结果。
但是当我在应用程序中使用 ExecuteReader
检索这些行时,它只返回5行。为什么会丢失一行呢?
我的存储过程由5个 union 语句组成,这些语句都从同一个表中获取数据:
dbase.AddInParameter(cmd, "@LoginUser", DbType.String, UserID);
try
{
using (IDataReader dr = dbase.ExecuteReader(cmd))
if (dr.Read())
{
dt = new DataTable("DashBoard");
dt.Load(dr);
}
}
dbase
是我的数据库对象。而cmd
是用于调用存储过程的SqlCommand
。
UserID
是传递的参数。
存储过程代码如下:
ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75))
-- Add the parameters for the stored procedure here
AS
BEGIN
SET NOCOUNT ON;
SET DATEFORMAT DMY;
DECLARE @LastLoginDate as DateTime
Select @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUser)
Select 'Last Login Date', convert(varchar(12),@LastLoginDate,105)
Union
Select 'Nos. Records pending for Upload' as Title, convert(varchar(5),COUNT(s.BatchID)) Total from dbo.BREGISTRATIONENTRY s, Dbo.TBL_iBATCH B
where B.BatchID = s.BatchID And b.Forwarded = 0 and b.isBatchClosed = 1
END