2016-04-05 41 views
0

私はMMSHOという名前のリンクサーバー接続を持っています。 Oracleサーバーには、OPENQUERYによって店舗コードを送信し、次に条件をフィルタリングするパラメータ化された関数があります。 :私はOPENQUERYFROMキーワードが、ノー成功の間の行を削除しようとしていOPENQUERYのパラメータを使用

Msg 156, Level 15, State 1, Line 20
Incorrect syntax near the keyword 'CASE'.

Msg 102, Level 15, State 1, Line 20
Incorrect syntax near 'DEPARTMENT'.

:私はEXEC (@SQL)で上記のクエリを実行すると

DECLARE 
     @OPENQUERY NVARCHAR (MAX), 
     @STOREID  VARCHAR (2), 
     @ARTICLEID VARCHAR (10), 
     @SQL   NVARCHAR (MAX) 

SET @STOREID = 10; 
SET @ARTICLEID = 245511; 
SET @OPENQUERY = 'SELECT * 
        FROM OPENQUERY (MMSHO, 
         ''SELECT MS000' 
      + @STOREID 
      + '[email protected]' 
      + @STOREID 
      + '77TRP(ART_NR, VAR, GEBI_NR) AS ARTICLE_NNBP 
            FROM MS000' 
      + @STOREID 
      + '[email protected]' 
      + @STOREID 
      + '77TRP 
            WHERE SUBSYS_ART_NR = ' 
      + @ARTICLEID 
      + ''''; 

    SET @SQL = 
      'SELECT STORE_NO, 
      SUBSYS_ART_NO, 
      ARTICLE_NO, 
      ARTICLE_DESC, 
      PUAR, 
      SUPPLIER_NO, 
      SORTEN_TEXT AS ARTICLE_VARIANT, 
      GEBI_NR, 
      BLOCK_CD, 
      PACKAGE_CONTENT AS CONTENT, 
      PACKAGE_TYPE AS CONTENT_TYPE, 
      VAT AS ARTICLE_VAT,' 
      + CHAR (13) 
      + '(' 
      + @OPENQUERY 
      + ') AS ARTICLE_NNBP, 
      ARTICLE_NNSP, 
      STOCK_QTY AS ARTICLE_STOCK, 
      CASE WHEN DEPT_NO IS NULL THEN 0 ELSE DEPT_NO END DEPARTMENT 
      FROM ARTICLE 
      WHERE STORE_NO = 10 AND SUBSYS_ART_NO = 245511' 

    PRINT (@SQL) 

は、SQL Serverはエラーをスローします。私は間違って何をしていますか?手伝っていただけませんか?

PRINTED QUERYマルチェロ・miorelli @

SELECT STORE_NO, 
     SUBSYS_ART_NO, 
     ARTICLE_NO, 
     ARTICLE_DESC, 
     PUAR, 
     SUPPLIER_NO, 
     SORTEN_TEXT AS ARTICLE_VARIANT, 
     GEBI_NR, 
     BLOCK_CD, 
     PACKAGE_CONTENT AS CONTENT, 
     PACKAGE_TYPE AS CONTENT_TYPE, 
     VAT AS ARTICLE_VAT, 
     (SELECT * 
      FROM OPENQUERY (
        MMSHO, 
        'SELECT [email protected](ART_NR, VAR, GEBI_NR) AS ARTICLE_NNBP 
           FROM [email protected] 
           WHERE SUBSYS_ART_NR = 245511') AS ARTICLE_NNBP, 
     ARTICLE_NNSP, 
     STOCK_QTY AS ARTICLE_STOCK, 
     CASE WHEN DEPT_NO IS NULL THEN 0 ELSE DEPT_NO END DEPARTMENT 
     FROM ARTICLE 
     WHERE STORE_NO = 10 AND SUBSYS_ART_NO = 245511 
+0

を、私はあなたが何を意味するのか、理解していない – mohan111

+0

親愛なるモハンクエリを実行した後に、単一引用符で来ているのはなぜ選択? –

+0

2番目のクエリでなぜ 'SELECT MS0001077TRP.MW070K01'が単一引用符で表示されます – mohan111

答えて

0

閉じ括弧と関連した問題、感謝をするためには役立ちます。

それはそのようにする必要があります:

(SELECT * 
     FROM OPENQUERY (
       MMSHO, 
       'SELECT [email protected](
ART_NR, VAR, GEBI_NR) AS ARTICLE_NNBP 
FROM [email protected] 
WHERE SUBSYS_ART_NR = 245511') AS ARTICLE_NNBP), 
関連する問題