2017-11-08 4 views
0

SSRSでこの神託を実行しながら、私はこの問題を抱えていクエリがあるORA-00911:無効な文字(は、Oracle Data Provider for .NET、マネージドドライバー)

を再:

SELECT something 
FROM x 
WHERE productid <> 'Cash' 
     AND va.principal IN (WITH t 
           AS (SELECT ? STR 
            FROM dual) 
          SELECT REGEXP_SUBSTR (str, '[^,]+', 1, LEVEL) 
            SPLIT_VALUES 
          FROM t 
          CONNECT BY LEVEL <= (SELECT LENGTH (
               Replace (str, ',', 
               NULL)) 
                FROM t)) 
ORDER BY cusip, 
      portfolio 

+1

あなたはサブクエリOR CTEを使用するか – xQbert

+0

文全体を先行する必要があります。あなたはどうにかしてその両方を行うことができました。 – JNevill

+1

@xQbert:そうではありません:http://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=20f08aa2eb9e883f68000a0e71beacc7 –

答えて

0

書き換えあなたのクエリはこのようなものに見えます。 Withステートメント

SELECT something 
FROM x va 
     JOIN (WITH t 
        AS (SELECT ? STR 
         FROM dual) 
      SELECT REGEXP_SUBSTR (str, '[^,]+', 1, LEVEL) split_values 
       FROM t 
       CONNECT BY LEVEL <= (SELECT Length (REPLACE (str, ',', NULL)) 
            FROM t)) b 
     ON va.principal = b.split_values 
WHERE productid <> 'Cash' 
ORDER BY cusip, 
      portfolio; 
+0

お時間をありがとう。私の主な関心事は、SSRS Report Builderからパラメータを渡しながら、SELECT REGEXP_SUBSTR(str、 '[^、] +'、1、LEVEL)からカンマ区切りの値を抽出できないことでした。だから私は解決するための回避策を見つけた。 tablixプロパティのexpressionブロックに条件を設定します。しかし、これはパフォーマンスに影響します。 – user3122409

関連する問題