0

APEX PL/SQL を使用するのは初めてです。私の質問が既に取り上げられている場合は、事前にお詫び申し上げます。答えを徹底的に探したと思います。

リージョンのソースとして正確に機能する標準クエリがありますが、追加するシャトルから返された LOV を処理できるように PL/SQL に変換する必要があります。

これは、作業クエリの重要な部分です。

select METRIC_DEFINITION_ID,
      METRIC_NAME,
      sum(decode(START_DATE, '01-JUN-12', VALUE)) as "Jun 2012"

from ... (a substantial query that works)

PL/SQL ブロックからこれを返そうとすると、次のようになります。

BEGIN
return 'select METRIC_DEFINITION_ID,
      METRIC_NAME,
      sum(decode(START_DATE, ' '01-JUN-12' ', VALUE)) as "Jun 2012"

      from ... (a substantial query that works)';
END;

次のエラー メッセージが表示されます。

(ORA-06550: line 9, column 33: PLS-00103: Encountered the symbol "01-JUN-12" 
when expecting one of the following: * & = - + ; < ...

あたかもコンパイラが演算子を期待しているかのように。

私が試してみました

...TO_DATE(' '01-JUN-12' ')...

成功しませんでした。文字列を変数に渡し、それを返すことも違いはありません。

私が読んだすべてのドキュメントは、私のオリジナルが機能するはずであることを示唆しています。

このコンテキスト(リージョンの APEX ソース)で「デコード」の構文が異なるかどうかを知っている人はいますか?

すべての提案に感謝します。

乾杯、ジェイソン

===========

要求に応じて、完全なクエリを追加します。行に注意してください

and METRIC_COLLECTION.METRIC_COLLECTION_ID IN :P44_COLLECTION_SELECTOR)

現在、P44_COLLECTION_SELECTOR という名前のシャトルで単一のアイテムが選択されている場合にのみ機能するため、PL/SQL を学習する必要があります。

日付は、長期的には入力に基づいて決定されます - これは POC です。

select
METRIC_DEFINITION_ID,
   METRIC_NAME,
   sum(decode(START_DATE, '01-JUN-12', VALUE)) as "Jun 2012",
   sum(decode(START_DATE, '01-JUL-12', VALUE)) as "Jul 2012",
   sum(decode(START_DATE, '01-AUG-12', VALUE)) as "Aug 2012",
   sum(decode(START_DATE, '01-SEP-12', VALUE)) as "Sep 2012",
   sum(decode(START_DATE, '01-OCT-12', VALUE)) as "Oct 2012",
   sum(decode(START_DATE, '01-NOV-12', VALUE)) as "Nov 2012"

from

(select  
METRIC_DEFINITION.METRIC_DEFINITION_ID as METRIC_DEFINITION_ID,
 METRIC_DEFINITION.METRIC_NAME as METRIC_NAME,
 METRIC_VALUE.START_DATE as START_DATE,
 METRIC_VALUE.VALUE as VALUE 
from     
METRIC_VALUE METRIC_VALUE,
 METRIC_DEFINITION METRIC_DEFINITION 
where   
METRIC_DEFINITION.METRIC_DEFINITION_ID=METRIC_VALUE.METRIC_DEFINITION_ID) 

where METRIC_DEFINITION_ID IN 

(select  
METRIC_COLLECTION_MAP.METRIC_DEFINITION_ID as METRIC_DEFINITION_ID 
from     METRIC_COLLECTION_MAP METRIC_COLLECTION_MAP,
 METRIC_COLLECTION METRIC_COLLECTION 
where
METRIC_COLLECTION.METRIC_COLLECTION_ID=METRIC_COLLECTION_MAP.METRIC_COLLECTION_ID 

and 
METRIC_COLLECTION.METRIC_COLLECTION_ID IN :P44_COLLECTION_SELECTOR)

group by METRIC_DEFINITION_ID, METRIC_NAME
4

1 に答える 1

0

引用符の間にスペースを入れたのはなぜですか?

変更してみてください:

sum(decode(START_DATE, ' '01-JUN-12' ', VALUE))

に:

sum(decode(START_DATE, ''01-JUN-12'', VALUE))

私はこれを理解します:

execute immediate 'select to_date(' '01-JUN-12' ') from dual';

同じエラーを返します。

于 2013-01-09T21:09:43.837 に答える