存储过程返回false值

时间:2011-12-02 05:06:25

标签: sql-server stored-procedures

我编写了一个用于从列中获取计数的存储过程,但是当我执行该过程时,它返回一个日期值。单独的查询执行会返回所需的结果集。

ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75)) 
AS 
BEGIN 

    DECLARE @LastLoginDate  as DateTime 

    Select  @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUser);

    Select  'Last Login Date', @LastLoginDate 
    Union
    Select  'No. Active Business Associates' as Title, COUNT(isActive) Total 
    from    (select 1)d(isActive)
    where   isActive = 1 
  Union Select 'New Registration Today' as Title, COUNT(1) Total from dbo.TBL_iREGFORM     where isActive = 1 And GETDATE()>= RegDate
 Union Select 'Registration Pending for Verification' as Title, COUNT(1) Total from dbo.TBL_iREGFORM where isActive = 1 and isVerified = 1
END

1 个答案:

答案 0 :(得分:3)

您正在使用整数@LastLoginDate联合日期时间COUNT(isActive)

这导致您遇到的隐式转换。要在同一查询中返回这些值,您需要将它们转换为通用数据类型,可能是varchar。或者,您可以使用两个不同的查询。

如果您确实选择继续使用联合,请务必使用UNION ALL。阅读更多here