2016-07-22 84 views
-1

我需要我的存儲過程幫助,我不斷收到此錯誤,但找不到真正的錯誤。Msg 102,Level 15,State 1,Line 6'='附近的語法不正確

Msg 102,Level 15,State 1,Line 6 '='附近的語法不正確。

我的代碼:

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 + ' 
     ' 
     ) 

回答

1

下面的解決方案應該添加缺少的'

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) 

嘗試下一次檢測到錯誤打印結果的查詢。

0

您的查詢可能具有不同的引號比它需要被結束了。 首先將動態sql分配給變量,並在將其傳遞給EXEC()語句之前查看它的輸出。

嘗試下面的一個

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 + @Locatio[email protected] + ') 
     WHERE Sync_Batch_Num = '+CAST(@Batch_Num_For_Sending AS VARCHAR) 


EXEC(@SQL) 
+0

現在我收到了Msg 8114,Level 16,State 5,Line 15 將數據類型nvarchar轉換爲bigint時出錯。 – Kanyemon

+0

@Kanyemon做一個CAST(@Batch_Num_For_Sending AS VARCHAR)' – Asken

相關問題