我是使用 oracle 的新手,我正在嘗試使用變數從 SYSDATE 查看當前月份。但是無論我嘗試了多少組合,我都會收到一條錯誤訊息,指出缺少右括號。
非常感謝您的幫助,謝謝!
DECLARE
sys_month NUMBER := 0;
BEGIN
sys_month := TO_NUMBER(TO_CHAR(SYSDATE,'MON'));
dbms_output.put_line('Current Month: ' || sys_month);
END;
/
uj5u.com熱心網友回復:
但是無論我嘗試了多少組合,我都會收到一條錯誤訊息,指出缺少右括號。
您的代碼在語法上是有效的,并且不會產生“缺少右括號”錯誤。如果您收到該錯誤,那么它將來自其他代碼(之前或之后)作為您的代碼:
DECLARE
sys_month NUMBER := 0;
BEGIN
sys_month := TO_NUMBER(TO_CHAR(SYSDATE,'MON'));
dbms_output.put_line('Current Month: ' || sys_month);
END;
/
因運行時例外(而不是編譯時錯誤)而失敗:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 4
因為你當前的日期轉換為像一個字串DEC為MON次,然后試圖向字串轉換為數字; 失敗,因為它包含字母字符且沒有數字。
要修復該錯誤,正如@mathguy所指出的,您可以EXTRACT在單個函式呼叫中使用它:
DECLARE
sys_month NUMBER := EXTRACT(MONTH FROM SYSDATE);
BEGIN
dbms_output.put_line('Current Month: ' || sys_month);
END;
/
或者,如果您確實想先轉換為字串,然后再轉換為數字,則可以使用MM格式模型:
DECLARE
sys_month NUMBER := TO_NUMBER(TO_CHAR(SYSDATE, 'MM'));
BEGIN
dbms_output.put_line('Current Month: ' || sys_month);
END;
/
這兩個輸出:
Current Month: 11
db<>在這里擺弄
uj5u.com熱心網友回復:
我相信你正在尋找這樣的東西。
set serveroutput on;
DECLARE
sys_month varchar2(60) ;
BEGIN
sys_month := (TO_CHAR(SYSDATE,'MON'));
dbms_output.put_line('Current Month: ' || sys_month);
END;
/
這將回傳Nov。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369924.html
