Sql 使用变量返回值变为零时的存储过程

Sql 使用变量返回值变为零时的存储过程,sql,asp.net,Sql,Asp.net,请检查存储过程-我的错误是什么?我正在尝试将计算值分配给变量 Alter Proc [dbo].[FindAnnualLeave1] @Empid varchar(20) as Declare @AnnualPending int Select @AnnualPending = (select (0.0821917808219178) * DATEDIFF(d, e.doj,GETDATE())- l.Leaves

请检查存储过程-我的错误是什么?我正在尝试将计算值分配给变量

Alter Proc [dbo].[FindAnnualLeave1]
   @Empid varchar(20)
as
   Declare @AnnualPending int

   Select 
      @AnnualPending = (select (0.0821917808219178) * DATEDIFF(d, e.doj,GETDATE())- l.Leaves 
                        where l.EmpLeaveCode = 'Annual')

   From 
      EmployeeLeaves l
   inner join 
      EmployeeMaster e on l.EmpID = e.EmpID
   where 
      l.EmpID = e.EmpID

   return @AnnualPending
Go

此查询不返回任何内容。单击命令按钮后,我想将此变量显示给asp.net标签。如果我没有使用变量,我的意思是只有select语句返回值。我尝试了asp和sql

存储过程的返回类型用于返回退出代码,即int

计算得到的值介于0和1之间

您需要定义float或numeric(10,4)类型的输出变量并返回该值

 Alter Proc [dbo].[FindAnnualLeave1]
@Empid varchar(20),        
@AnnualPending numeric(10,4) OUTPUT

我将变量更改为numeric,但仍然返回0。您不能返回小数,您需要定义输出参数。Alter Proc[dbo].[FindAnnualLeave1]Empid varchar(20),@AnnualPending numeric(10,4)OUTPUT@NAJEEB,您需要获取此值而不是返回类型我需要答案5.xxxx,我使用此用户手动计算。如果没有存储过程,它可以正常工作,但是使用存储过程是不可能的。首先,您的子查询没有
FROM(tablename)
子句。。。。。另外:您的
WHERE
子句根本不需要,因为您已经在
JOIN
条件(它所属的位置)中定义了此链接