Sql 不带列名的sys\u refcursor
我正在使用一个函数来打印表中的值Sql 不带列名的sys\u refcursor,sql,oracle,plsql,Sql,Oracle,Plsql,我正在使用一个函数来打印表中的值 create or replace FUNCTION UserDetails(p_startDate IN VARCHAR, p_endDate in VARCHAR) RETURN sys_refcursor AS v_cursor sys_refcursor; BEGIN IF to_date(p_endDate, 'dd-mm-yyyy') - to_date(p_startDate, 'dd-mm-yyyy') > 90 T
create or replace FUNCTION UserDetails(p_startDate IN VARCHAR, p_endDate in VARCHAR) RETURN sys_refcursor
AS
v_cursor sys_refcursor;
BEGIN
IF to_date(p_endDate, 'dd-mm-yyyy') - to_date(p_startDate, 'dd-mm-yyyy') > 90 THEN
RAISE invalid_number;
END IF;
OPEN v_cursor FOR SELECT UPPER(name) NAME, MAX(Updated_date) UPDATED_DATE
FROM s_user_data
WHERE Updated_date between to_Date(p_startDate,'DD-MON-YYYY') and to_Date(p_endDate,'DD-MON-YYYY')
ORDER BY Updated_date DESC;
RETURN v_cursor;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (TO_CHAR (SYSDATE, 'HH24:MI:SS') || ' Error: ' || SQLCODE || ' ' || SQLERRM);
RAISE;
END;
运行该功能后:从dual中选择UserDetails('08-MAY-2021'、'09-MAY-2021')
我得到以下输出:
{,,}
我必须做到以下几点:
{,,}
有没有办法不使用列名获取输出。请告知。如果要从sqlplus执行,请输入:
SET HEAD OFF
如果您是从sql开发人员或某个IDE执行,就在anonym block put之前,使用相同的语句:SET HEAD OFF,相当于SET HEADING OFF
在colcusion中,文章如下:
一般规则是:
SET HEAD[ING] OFF
你的功能不一致。为什么将输入参数
p_startDate
和p_endDate
声明为VARCHAR
,而不是DATE
在您的代码中
to_date(p_endDate, 'dd-mm-yyyy') - to_date(p_startDate, 'dd-mm-yyyy')
再往下
to_Date(p_startDate,'DD-MON-YYYY') and to_Date(p_endDate,'DD-MON-YYYY')
输入值不能同时具有格式dd-mm-yyyy
和dd-MON-yyyy
关于你的实际问题:你真的不清楚你想要什么。如何调用该函数
如果函数返回一个RefCursor,则必须调用该函数(这并不意味着
select…from dual
)并处理该光标。另一个选择可能是或。但是,只要您的要求不明确,就很难帮助您。如何显示ref光标取决于您的客户机或应用程序。例如,在SQLDeveloper中,您会看到以脚本或语句的形式运行查询的不同结果。不过,您想要的输出看起来有点奇怪。您不希望输出为列吗?