2016-07-22 3 views
-1

Ich brauche Hilfe mit meiner gespeicherten Prozedur, ich bekam diesen Fehler, aber ich kann den echten Fehler nicht finden.Msg 102, Ebene 15, Status 1, Zeile 6 Falsche Syntax in der Nähe von '='

Msg 102, Ebene 15, Status 1, Zeile 6 Falsche Syntax in der Nähe von '='.

Mein Code:

DECLARE @Batch_Num_For_Sending BIGINT; 
DECLARE @IPLocal NVARCHAR(15); 

SET @IPLocal = (
     SELECT Local_IPAddress 
     FROM [RFIDSync].[dbo].[RFID_LinkSetup] 
     WHERE Link_ID = 1 
     ); 

DECLARE @IPMain NVARCHAR(15); 

SET @IPMain = (
     SELECT Main_IPAddress 
     FROM [RFIDSync].[dbo].[RFID_LinkSetup] 
     WHERE Link_ID = 1 
     ); 

DECLARE @LocationProj NVARCHAR(50); 

SET @LocationProj = 'Test_Project'; 
SET @Batch_Num_For_Sending = (
     SELECT MIN(Batch_Id) 
     FROM [db].[dbo].[LOCALBATCH] 
     WHERE Batch_Status = 0 
     ) 

SELECT @Batch_Num_For_Sending 

EXEC (
     ' 
     SELECT Sync_Batch_Num FROM OPENQUERY([' + @IPMain + '\SQLEXPRESS], ''SELECT Sync_Batch_Num 
      FROM [db].[dbo].[SYNCBATCH] WHERE [Location] = ''''' + @LocationProj + ''''' 
      '') 
      WHERE Sync_Batch_Num = ' + @Batch_Num_For_Sending + ' 
     ' 
     ) 

Antwort

1

Die unten Lösung der fehlenden ' hinzufügen sollte:

DECLARE @SQL NVARCHAR(MAX) = 'SELECT Sync_Batch_Num FROM OPENQUERY([' + @IPMain + '\SQLEXPRESS], ''SELECT Sync_Batch_Num 
       FROM [db].[dbo].[SYNCBATCH] WHERE [Location] = ''''' + CONVERT(NVARCHAR(50), @LocationProj) + ''''''') 
       WHERE Sync_Batch_Num = ' + CONVERT(NVARCHAR(50), @Batch_Num_For_Sending) + ''; 

    PRINT @SQL 

    EXEC (@SQL) 

Versuchen das Ergebnis Abfrage beim nächsten Mal Druck, den Fehler zu erkennen.

0

Ihre Anfrage mit unterschiedlichen Anführungszeichen werden enden kann, als es erforderlich ist. Weisen Sie die dynamische Variable sql zuerst einer Variablen zu und lassen Sie sie ausgeben, bevor Sie sie an die Anweisung EXEC() übergeben.

versuchen die unter einem

DECLARE @Batch_Num_For_Sending bigint; 
DECLARE @IPLocal nvarchar(15); 
SET @IPLocal = (SELECT Local_IPAddress FROM [RFIDSync].[dbo].[RFID_LinkSetup] WHERE Link_ID = 1); 
DECLARE @IPMain nvarchar(15); 
SET @IPMain = (SELECT Main_IPAddress FROM [RFIDSync].[dbo].[RFID_LinkSetup] WHERE Link_ID = 1); 
DECLARE @LocationProj nvarchar(50); SET @LocationProj = 'Test_Project'; 

DECLARE @SQ VARCHAR(4) = '''' 
DECLARE @SQL VARCHAR(max) = '' 

SET @Batch_Num_For_Sending = (SELECT MIN(Batch_Id) FROM [db].[dbo].[LOCALBATCH] WHERE Batch_Status = 0) 
SELECT @Batch_Num_For_Sending 

SET @SQL = 'SELECT Sync_Batch_Num FROM OPENQUERY(['[email protected]+'\SQLEXPRESS],' + @SQ + 'SELECT Sync_Batch_Num 
     FROM [db].[dbo].[SYNCBATCH] WHERE [Location] =' + @SQ + @[email protected] + ') 
     WHERE Sync_Batch_Num = '+CAST(@Batch_Num_For_Sending AS VARCHAR) 


EXEC(@SQL) 
+0

Jetzt habe ich diese Msg 8114, Ebene 16, Status 5, Zeile 15 Fehler beim Konvertieren von Datentyp Nvarchar in bigint. – Kanyemon

+0

@Kanyemon Führen Sie 'CAST (@Batch_Num_For_Sending AS VARCHAR)' aus – Asken

Verwandte Themen