2016-04-05 12 views
0

İçerisinde MMSHO adlı sunucu bağlantısına bağlandım. Oracle kodlarında, OPENQUERY numaralı mağaza kodlarını göndermek istediğimde parametreleştirilmiş bir işlev var. : Ben OPENQUERY ve FROM anahtar kelime ama hiçbir başarı arasındaki çizgileri kaldırmak için çalıştıkParametreleri 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'.

: Ben EXEC (@SQL) ile yukarıdaki sorgu çalıştırdığınızda

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 bir hata atar. Neyi yanlış yapıyorum? Lütfen bana yardım eder misiniz?

BASKILI SORGULAMA marcello-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

, ne demek istediğini anlamıyorum – mohan111

+0

Sevgili Mohan sorgu yürüttükten sonra tek alıntı geliyor Neden seç? –

+0

2. sorgudaki neden 'SELECT MS0001077TRP.MW070K01' tek tırnak işareti içinde gösteriliyor – mohan111

cevap

0

ayraç ile ilgili bir sorun, sayesinde için yardımcı olur.

Böyle olması gerekir:

(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),