這裏對PL/SQL知之甚少,所以需要一點幫助。從查詢中創建PL/SQL函數
我有一個查詢,我需要變成一個函數(讓我們稱之爲reject_list),但不知道如何去做。這是我到目前爲止:
create or replace function reject_list(ayrc in varchar2,mcrc in varchar2)
return string
begin
select distinct
'<tr><td>'||cap.cap_uci2||'</td>
<td>'||cap.cap_stuc||'</td>
<td>'||cap.cap_mcrc||'</td>
<td>'||cap.cap_ayrc||'</td>
<td>'||stu.stu_fnm1||'</td>
<td>'||stu.stu_surn||'</td>
<td>'||cap.cap_stac||'</td>
<td>'||cap.cap_crtd||'</td></tr>'
from
intuit.srs_cap cap
,intuit.ins_stu stu
,intuit.srs_apf apf
where
cap.cap_stuc = stu.stu_code
and cap.cap_apfs = apf.apf_seqn
and cap.cap_stuc = apf.apf_stuc
and cap.cap_mcrc = &mcrc
and cap.cap_ayrc = &ayrc
and cap.cap_idrc in ('R','CR','CFR')
and apf.apf_recd <= to_date('1501'||substr(&ayrc,1,4),'DDMMYYYY');
end;
這不運行 - 任何人都可以幫忙嗎?
謝謝:)
編輯:該查詢是一個在應用程序中運行,但已經我們試圖去優化它的速度。我不確定函數是否是最好的選擇,但是我們在應用程序的另一部分中創建了一個函數來返回簡單的計數,從而提高了速度的指數級。我需要的不僅僅是指導如何將其轉化爲功能的指導。例如,如果一個視圖是最好的選擇,請讓某人提供一些關於如何做到這一點的最佳方法的指導?
因此,該對象應該能夠在服務器上存儲查詢,以便我輸入參數並返回列出的字段。爲了使這更復雜,我之前沒有提到的一件事是,這需要格式化爲HTML表格。我現在已經將標記添加到上面的查詢中,並且所有的字段都需要連接起來。
對此非常感謝。
你想返回一個遊標,不是嗎? – tbone
有很多關於你的問題還不清楚。你想讓你的函數返回什麼? ('字符串'不是一個有效的SQL類型,至少在Oracle中。)爲什麼你需要把你的查詢變成一個函數? (如果只是爲了能夠在不重複的情況下在多個地方使用相同的查詢,那麼最好使用視圖。)在SQL Server中,存儲函數可以返回SELECT查詢的結果 - 您是否在尋找Oracle相當於這個? –
請參閱上面所做的編輯。我最初把這個問題放在了一個急促的地方,因此缺乏信息,但請讓我知道是否有其他需要澄清的問題。 –