这里对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相当于这个? –
请参阅上面所做的编辑。我最初把这个问题放在了一个急促的地方,因此缺乏信息,但请让我知道是否有其他需要澄清的问题。 –