Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-01027:обвързващи променливи не са разрешени за дефиниране на данни, когато се опитвате да използвате if elseif

Както се казва в грешката, не можете да използвате свързващи променливи тук, така че трябва да свържете:

create or replace procedure create_dates_testing 
    ( dummy_variable varchar2 default to_char(sysdate,'YYYYMMDD') )
as
    day_of_month varchar2(255) := extract(day from sysdate);
    today varchar2(255) := to_char(sysdate +1, 'fmDAY', 'nls_date_language = English');
    start_date date;
    next_start_date date;
begin
    if today = 'SUNDAY' then
        -- select yesterday
        start_date      := trunc(sysdate) - interval '1' day;
        next_start_date := trunc(sysdate);

    elsif day_of_month = 3 then
        -- select the whole of last month
        start_date      := trunc(sysdate, 'MM') - interval '1' month;
        next_start_date := trunc(sysdate, 'MM') - interval '1' month;
    else
        return;
    end if;

    execute immediate 'drop table new_customers';

    execute immediate 'create table new_customers as 
    select id, client_name, invoice_date 
    from clients table
    where transactiondate >= date '''  || to_char(start_date,'YYYY-MM-DD') ||
    ''' and transactiondate < date ''' || to_char(next_start_date,'YYYY-MM-DD') ||'''';

end create_dates_testing;

Вероятно ще има още код за обработка на случая, когато не е нито неделя, нито третото число от месеца, или new_customers таблицата не съществува.

Редактиране:добавено else условие за край на обработката, ако нито едно от условията за дата не е изпълнено.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL цикъл през диапазон от дати

  2. Агрегиране на низове в ORACLE 10g с три колони

  3. Как да форматирам тип интервал във формат HH:MM?

  4. Редовно, повтарящо се взаимодействие между оракул и интелигентен договор

  5. Как да се свържа с Oracle 10g от отдалечен клиент?