Quantcast
Channel: Forum Getting started with SQL Server
Viewing all articles
Browse latest Browse all 7129

Error converting type

$
0
0

my code throws error:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to float.


Code:

ALTER FUNCTION [dbo].[GetPayDeducted] 
(
	@emplID int,
	@month VARCHAR(50) = NULL
)
RETURNS int
AS
BEGIN
	Declare @StartDate Date,  @EndDate Date, @mydate date, 
	        @TotalDays int, @TotalHours int, @BasicSalary float, 
			@BSalaryHour int, @TotalSalaryDeducted float, @hms varchar(100),
			@hrs int, @mts int, @TotalHoursDeducted float,
			@hrsDeducted float
	    Set @hrsDeducted = dbo.GetHoursDeducted(@emplID, @month)
		set @hms = @hrsDeducted
        Set @hrs = LEFT(@hms,charindex(':',@hms)-1)
	    set @mts=RIGHT(@hms,len(@hms)-charindex(':',@hms))
        set @TotalHoursDeducted = @hrs + (@mts/60.0)
		Set @mydate = GETUTCDATE()
		Set @StartDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101))
		Set @EndDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),101))
		Set @TotalDays =((DATEDIFF(dd, @StartDate, @EndDate) + 1)
		  -(DATEDIFF(wk, @StartDate, @EndDate) * 1)
		  -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)) 
		Set @TotalHours  = (@TotalDays * 8)
		Set @BasicSalary = (Select BasicSalary from HrEmployee where EmplID=@emplID)
		--Set @TotalHoursWorked = (Select OverallTime from MonthlyRecord where EmplID = @emplID AND Month = @month )
		Set @BSalaryHour = @BasicSalary / @TotalHours
		Set @TotalSalaryDeducted = @BSalaryHour * @TotalHoursDeducted
		--------------------------------------------------------------------------------------
	-- Return the result of the function
	RETURN  @TotalSalaryDeducted

END

Note: i am calling another function in this line:

@hrsDeducted = dbo.GetHoursDeducted(@emplID, @month)
This one:
ALTER FUNCTION [dbo].[GetHoursDeducted]
(
	@emplID int,
	@month varchar(50)
)
RETURNS varchar(11)
AS
BEGIN
	Declare @StartDate Date,  @EndDate Date, @mydate date, 
	        @TotalDays int, @TotalHours int, @BasicSalary float, 
			@BSalaryHour int, @TotalSalary float, @hms varchar(100),
			@hrs int, @mts int, @TotalHoursWorked float,
			@hrsDeducted float,@hrsDeductedTimeEq varchar(11)
		set @hms = (Select OverallTime from MonthlyRecord where EmplID = @emplID AND Month = @month )
        Set @hrs = LEFT(@hms,charindex(':',@hms)-1)
	    set @mts=RIGHT(@hms,len(@hms)-charindex(':',@hms))
        set @TotalHoursWorked = @hrs + (@mts/60.0)
		Set @mydate = GETUTCDATE()
		Set @StartDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101))
		Set @EndDate = (SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),101))
		Set @TotalDays =((DATEDIFF(dd, @StartDate, @EndDate) + 1)
		  -(DATEDIFF(wk, @StartDate, @EndDate) * 1)
		  -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)) 
		Set @TotalHours  = (@TotalDays * 8)
		Set @BasicSalary = (Select BasicSalary from HrEmployee where EmplID=@emplID)
		--Set @TotalHoursWorked = (Select OverallTime from MonthlyRecord where EmplID = @emplID AND Month = @month )
		Set @BSalaryHour = @BasicSalary / @TotalHours
		Set @TotalSalary = @BSalaryHour * @TotalHoursWorked
		Set @hrsDeducted = @TotalHours - @TotalHoursWorked
        Set @hrsDeductedTimeEq= CAST(FLOOR(@hrsDeducted) AS varchar(5)) + ':' + CAST((@hrsDeducted-FLOOR(@hrsDeducted))*60 AS varchar(5))		
		--------------------------------------------------------------------------------------
	-- Return the result of the function
	RETURN  @hrsDeductedTimeEq
END


Viewing all articles
Browse latest Browse all 7129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>