Объявленная переменная startime при возвращении вывода хочет, чтобы он был заключен в одинарные кавычки, чтобы я мог передать вывод как переменную вызываемой процедуре. Например, '08 -APR-2020 08:00:00 ', поскольку процедура интерпретирует его как нулевое значение, если оно не заключено в одинарные кавычки. Вот почему я хочу объединить вывод с одинарными кавычками. Это конкретная проблема c, в то время как вызов процедуры rman rds. Обострена проблема, когда AWS находится в стадии расследования и ожидает ответа.
DECLARE
starttime DATE := sysdate - (15/1440) ;
endtime DATE := SYSDATE ;
v_date DATE;
v_number NUMBER(10);
BEGIN
-- Print the starttime and endtime
DBMS_OUTPUT.PUT_LINE(starttime);
DBMS_OUTPUT.PUT_LINE(endtime);
END;
/
09-APR-2020 13:10:14
09-APR-2020 13:25:14
PL/SQL procedure successfully completed
Приведенная ниже процедура дает мне ORA-01858: не числовой символ c был найден, когда число c ожидалось. Если я заменяю v_starttime, endtime DATE := ' 08-APR-2020 04:00:00'
со значениями даты, все работает нормально, и я получаю вывод. Это база данных Oracle rds.
CREATE OR REPLACE PROCEDURE test (
owner VARCHAR2,
dir VARCHAR2,
starttm DATE,
endtm DATE,
parallel NUMBER,
output BOOLEAN )
AUTHID DEFINER AS
BEGIN
rdsadmin.rdsadmin_rman_util.backup_archivelog_date(
p_owner => owner,
p_directory_name => dir,
p_from_date => startm,
p_to_date => endtm,
p_parallel => parallel,
p_rman_to_dbms_output => TRUE);
END;
/
DECLARE
plsql_block VARCHAR2(500);
owner VARCHAR2(4) := 'TEST';
dir VARCHAR2(10) := 'TESTDIR';
startm DATE := SYSDATE - (15/1440);
endtm DATE := SYSDATE;
parallel NUMBER := 1;
output BOOLEAN;
BEGIN
plsql_block := 'BEGIN test(:a,:b,:c,:d,:e,:f);END;';
EXECUTE IMMEDIATE plsql_block USING owner,dir,startm,endtm, parallel, output;
END;
/