CREATE PROCEDURE "SYSTEM"."BACKUP_DAILY" ( IN retention INT )
LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS BEGIN --Use a Cursor for future use. The following only loops one time based on one record from SQL. DECLARE CURSOR c_backup_catalog FOR --- Find the Minimum Backup ID from sucesful backups in the past 5 days. SELECT TOP 1 min(to_bigint(BACKUP_ID)) as BACKUP_ID, TO_CHAR(CURRENT_TIMESTAMP,'YYYYMMDD') as TODAY FROM SYS.M_BACKUP_CATALOG where SYS_START_TIME >= ADD_DAYS(CURRENT_TIMESTAMP, -:retention) and SYS_START_TIME <= CURRENT_TIMESTAMP and ENTRY_TYPE_NAME = 'complete data backup' and STATE_NAME = 'successful';
FOR cur_row as c_backup_catalog DO
--- Execute Backup adding todays date as an Integer EXEC 'BACKUP DATA USING FILE (''COMPLETE_DATA_BACKUP_' || cur_row.TODAY || ''')' ; --- Cleanup the Backup Catalog and backup files over X days old EXEC 'BACKUP CATALOG DELETE ALL BEFORE BACKUP_ID ' || cur_row.BACKUP_ID || ' COMPLETE'; --- Reclaim any log space post backup EXEC 'ALTER SYSTEM RECLAIM LOG';
END FOR;
END;
/* Execute the Procedure from SAP HANA Studio Example: CALL SYSTEM.BACKUP_DAILY(5) */