Erreur lors de la conversion du type de données varchar en bigint dans la procédure stockée

usp_TimesheetsAuditsLoadAllbyId 42747, NULL d'appeler cette procédure avec la command usp_TimesheetsAuditsLoadAllbyId 42747, NULL .

Mais j'ai toujours une erreur

Msg 8114, niveau 16, état 5, procédure usp_TimesheetsAuditsLoadAllById, ligne 9
Erreur lors de la conversion du type de données varchar en bigint.

L' ID de la table TimesheetsAudits est un type bigint . J'ai essayé plusieurs types de conversions et de conversions, mais je suis vraiment coincé en ce moment.

J'espère que quelqu'un peut aider. Merci

 ALTER PROCEDURE [dbo].[usp_TimesheetsAuditsLoadAllById] ( @Id INT, @StartDate DATETIME ) AS BEGIN SET NOCOUNT ON SELECT TOP 51 * FROM (SELECT TOP 51 ID, Type, ReferrerId, CAST(Description AS VARCHAR(MAX)) AS Description, OnBehalfOf, Creator, DateCreated FROM TimesheetsAudits WHERE (ReferrerID = @Id) AND (@StartDate IS NULL OR DateCreated < @StartDate) ORDER BY DateCreated DESC UNION SELECT TOP 51 tia.ID, tia.Type, tia.ReferrerId, '[Day: ' + CAST(DayNr AS VARCHAR(5)) + '] ' + CAST(tia.Description AS VARCHAR(MAX)) AS Description, tia.OnBehalfOf, tia.Creator, tia.DateCreated FROM TimesheetItemsAudits tia INNER JOIN TimesheetItems ti ON tia.ReferrerId = ti.ID WHERE (ti.TimesheetID = @Id) AND (@StartDate IS NULL OR tia.DateCreated < @StartDate) ORDER BY tia.DateCreated DESC) t ORDER BY t.DateCreated DESC END 

Définition du tableau pour les tables à partir des commentaires:

 CREATE TABLE [dbo].[TimesheetsAudits]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Type] [tinyint] NOT NULL, [ReferrerId] [varchar](15) NOT NULL, [Description] [text] NULL, [OnBehalfOf] [varchar](10) NULL, [Creator] [varchar](10) NOT NULL, [DateCreated] [datetime] NOT NULL ) CREATE TABLE [dbo].[TimesheetItemsAudits]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Type] [tinyint] NOT NULL, [ReferrerId] [varchar](15) NOT NULL, [Description] [text] NULL, [OnBehalfOf] [varchar](10) NULL, [Creator] [varchar](10) NOT NULL, [DateCreated] [datetime] NOT NULL ) 

Vous effectuez une INNER JOIN de [dbo]. [TimesheetsAudits] et TimesheetItems ti ON tia.ReferrerId = ti.ID

tia. [ReferrerId] est varchar et ti. [ID] est [bigint].

Je m'attendrais à une valeur dans tia. [ReferrerId] qui ne peut pas être convertie en bigint.

Essayez ce qui suit:

 SELECT [ReferrerId] FROM TimesheetItemsAudits WHERE ISNUMERIC(ReferrerId) = 0 

Cela peut vous aider à find les "lignes offensantes".