Я запускаю сценарий Unix * _sh, но с методами, которые используют pl / sql в нем.
Метод в сценарии:
method(){
sqlplus -s ${DB_CONNECTION} << EOF
set echo on;
set timing on;
set serveroutput on;
DECLARE
v_monthNow Date:=to_date('2018-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
v_charMonthNow Varchar(5):=to_char(v_monthNow,'MM');
v_charMonthBefore Varchar(5) :=to_char(v_monthNow, 'MM')-1;
BEGIN
dbms_output.Put_line('SYSDATE is '|| v_monthNow ||' || MonthNow is '|| v_charMonthNow);
IF v_charMonthBefore = '0'
set v_charMonthBefore = '12'
dbms_output.Put_line('MonthBefore is '|| v_charMonthBefore);
ELSE
dbms_output.Put_line('MonthBefore is '|| v_charMonthBefore);
END;
/
EOF
}
Мой вопрос: как мне установитьзначение v_charMonthBefore, что я хочу?
На самом деле, если sysdate
равно Jan 2018
, мне нужно v_monthNow=1
и v_charMonthBefore=12
, если sysdate
равно Feb 2018
, мне нужноv_monthNow=2
и v_charMonthBefore=1
Другой способ сделать это не требуется, мне просто нужно исправить то, что у меня есть сейчас, так как я не очень знаком с pl / sql.Спасибо