2016-07-22 19 views
-1

ストアドプロシージャのヘルプが必要ですが、このエラーが発生しましたが、実際のエラーは見つかりません。メッセージ102、レベル15、状態1、行6 '='付近の構文が正しくありません

メッセージレベル102、レベル15、状態1、行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()ステートメントに渡す前に出力を確認してください。

以下のソリューション

1以下
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

今、私はこのメッセージ8154、レベル16、状態5、行15を得ました。 データ型nvarcharをbigintに変換中にエラーが発生しました。 – Kanyemon

+0

@Kanyemon 'CAST(@Batch_Num_For_Sending AS VARCHAR)'を実行します。 – Asken

関連する問題