嘿,我试了很多次但我无法修复这个简单的程序来为我的个人网站工作。我想提取当前时间并用它显示一条消息。
赞当前时间是:上午12:00
这是我的代码。
Create Function A1SF_GETTIME Is
Temptime Char(20);
Message Varchar2(20) := 'The Current Time is :';
Begin
Select to_char(sysdate, 'HH24:MI:SS') As "Current Time"
Into TempTime
From dual;
dbms_output.put_line(Message || ' ' || TempTime);
End;
答案 0 :(得分:2)
函数需要在函数定义中包含RETURN
子句。它必须有一个RETURN
语句,以便函数实际返回一些东西。如果你解决这个问题,以及其他人指出你的本地变量Message
太小的事实,你可以做这样的事情
SQL> ed
Wrote file afiedt.buf
1 Create or replace Function A1SF_GETTIME
2 return varchar2
3 Is
4 l_time varchar2(10) := to_char( sysdate, 'HH24:MI:SS' );
5 l_message Varchar2(30) := 'The Current Time is : ' || l_time;
6 Begin
7 dbms_output.put_line( l_message );
8 return l_message;
9* End;
SQL> /
Function created.
SQL> select a1sf_gettime from dual;
A1SF_GETTIME
--------------------------------------------------------------------------------
The Current Time is : 14:09:47
答案 1 :(得分:1)
这个怎么样?
to_char(sysdate, '"The current time is "hh24:mi:ss')
,如
SQL> select to_char(sysdate, '"The current time is "hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'"THECURRENT
----------------------------
The current time is 09:16:08
答案 2 :(得分:1)
不确定错误是什么,因为你没有显示它:-)但你可以通过以下方式大大简化你的代码:
create function A1SF_GETTIME is
Temptime Char(50);
begin
select 'The current time is ' || to_char (sysdate, 'HH24:MI:SS')
into TempTime from dual;
dbms_output.put_line (TempTime);
end;
你必须增加TempTime
缓冲区的大小,因为它包含所有数据,50对于结果字符串应该足够大。这可以通过你完全摆脱Message
这一事实来抵消。
答案 3 :(得分:1)
你的代码并不是那么糟糕......你的字符串缓冲区对你的消息来说太小了!
这样可行:
Message VARCHAR2(21)