0
我是新來的使用APEX PL/SQL並提前道歉,如果我的問題已被覆蓋。我相信已經徹底地尋找答案。APEX-返回SQL查詢與PL/SQL中的日期錯誤
我有一個標準的查詢,它應該作爲一個區域的來源,但需要轉換到PL/SQL,所以我可以處理從我將要添加的班車返回的LOV。
這是工作查詢的關鍵部分:
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 selelcted目前僅適用,因此需要學習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
謝謝,但''是正確的語法,從我讀過的。錯誤消息更改爲:ORA-06550:第6行,第32列:PLS-00103:遇到符號「01」時期待以下之一... – user1964553
爲了逃避撇號,在''之間不能有空格。它必須立即進行或Oracle假定字符串已結束。 –
我以爲編譯器會這樣讀:return'select ... sum(decode(START_DATE,'as a string,then'01 -JUN-12')。我發現很多APEX PL/SQL示例類似於:v_somevar :='一個字符串''一個字符串需要用單引號''剩下的字符串';但是我還沒有找到一個使用日期的例子 – user1964553