PL/SQL如何使当前时间变量?

Posted

技术标签:

【中文标题】PL/SQL如何使当前时间变量?【英文标题】:PL/SQL how to make current time variable? 【发布时间】:2020-12-13 14:15:28 【问题描述】:

我的块:

create or replace procedure currentime IS
    current_time VARCHAR2(50):=  TO_CAHR( SYSDATE, 'YYYY.MM.DD HH24:MI:SS' ) ;

    --current_time VARCHAR2(50):=  SELECT TO_CAHR( SYSDATE, 'YYYY.MM.DD HH24:MI:SS' ) FROM DUAL;
begin
    dbms_output.put_line(current_time);
end;

set serveroutput on;
call currentime();

PL/SQL 错误:

错误(14,1):PLS-00103:“SET”

【问题讨论】:

这是一个 PL/SQL 编译错误,但它看起来不像来自 PL/SQL Developer(在问题中标记)。您正在使用什么工具以及如何运行上面的代码? set serveroutput 来自作为脚本运行的 SQL*Plus 或 SQL Developer。可能在 PL/SQL 块之后需要一个/(即在end; 之后的行),但这取决于工具。 TO_CARH 你是说to_cHar 吗?还有,为了更好的解决你的问题,想这样改时间的原因是什么? 【参考方案1】:

试试

create or replace procedure currentime IS
    current_time VARCHAR2(50) ;    

begin
    dbms_output.put_line(TO_CHAR( SYSDATE, 'YYYY.MM.DD HH24:MI:SS' ));

    current_time :=  TO_CHAR( SYSDATE, 'YYYY.MM.DD HH24:MI:SS' );

    dbms_output.put_line(current_time );

end;

set serveroutput on;
call currentime();

【讨论】:

【参考方案2】:

编译过程后,您需要有/ 终止符。下面是添加终止符后输出应如何显示的示例。我还稍微修改了过程以不需要变量。

代码

CREATE OR REPLACE PROCEDURE currentime
IS
BEGIN
    DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'YYYY.MM.DD HH24:MI:SS'));
END;
/

SET SERVEROUTPUT ON;
CALL currentime ();

【讨论】:

以上是关于PL/SQL如何使当前时间变量?的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 更新当前的

PL/SQL 如何查看当前连接信息以及SQL PLUS如何指定IP地址

PL / SQL中的当前状态

如何在不使用 LOOP 的情况下计算取决于先前值的当前值?

如何从 pl sql 过程运行 sql 脚本

Oracle Pl sql 登录时提示 “监听程序当前无法识别连接描述符中请求的服务” 。