Click here to Skip to main content
15,896,606 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi Folks,

I have used one query to update status in table it is working fine in UAT SERVER.
But when i use the same query on liver server i am getting following error

"Error converting varchar to Bigint.."

I dont see any issue with types.when i remove the StatusId = ... then i dnt see any problem.there is an issue with updating statusId.but not sure how to resolve it.

SQL
 @TaskId BIGINT,   
 @Percent TINYINT,  
 @LastUpdatedBy CHAR(10), 
 @LastUpdateDateTime DATETIME
AS  
BEGIN  
	UPDATE TaskList SET   
		PercentageCompleted = @Percent,   
		StatusId = (CASE WHEN @Percent = 100 THEN 3   
						 WHEN @Percent <> 0 THEN 2   
						 WHEN (SELECT COUNT(ID) FROM TaskTimerInfo WHERE TaskId = @TaskId) > 0 THEN 2   
						 WHEN (SELECT COUNT(TaskOwner.Id) FROM TaskOwner WHERE TaskOwner.TaskId = TaskList.Id AND TaskOwner.IsActive = 1) <> 0 THEN 1  
						 ELSE 6   
					END),   
		ActualEndDate = CASE WHEN @Percent = 100 AND ActualEndDate IS NULL THEN @LastUpdateDateTime END,   
		LastUpdatedBy = @LastUpdatedBy,   
		LastUpdateDateTime = @LastUpdateDateTime
	WHERE Id = @TaskId  
END
Posted
Updated 28-May-15 22:51pm
v2
Comments
F-ES Sitecore 29-May-15 5:01am    
Are the tables on the two servers the same? ie there aren't any differences in the data types of the fields in the TaskList table?
[no name] 29-May-15 5:22am    
both servers having same table structure..

1 solution

Well you can debug your result by queries the result and see yourself what values are being qualified for update.

Try running below query for each Task and validate the result. You will find anomaly in status that are causing the update to fail.

SQL
SELECT  @Percent [Percent],   
		(CASE WHEN @Percent = 100 THEN 3   
						 WHEN @Percent <> 0 THEN 2   
						 WHEN (SELECT COUNT(ID) FROM TaskTimerInfo WHERE TaskId = @TaskId) > 0 THEN 2   
						 WHEN (SELECT COUNT(TaskOwner.Id) FROM TaskOwner WHERE TaskOwner.TaskId = TaskList.Id AND TaskOwner.IsActive = 1) <> 0 THEN 1  
						 ELSE 6   
					END) [Status],   
		CASE WHEN @Percent = 100 AND ActualEndDate IS NULL THEN @LastUpdateDateTime END [ActualEndDate],   
		@LastUpdatedBy [LastUpdatedBy],   
		@LastUpdateDateTime [LastUpdatedDateTime]
FROM TaskList		
WHERE Id = @TaskId 
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900