Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-01027:wiązanie zmiennych nie jest dozwolone dla definicji danych podczas próby użycia if elseif

Jak mówi błąd, nie możesz tutaj używać zmiennych bind, więc musisz połączyć:

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;

Przypuszczalnie będzie trochę więcej kodu do obsługi przypadku, gdy nie jest ani niedziela, ani trzeci dzień miesiąca, lub new_customers tabela nie istnieje.

Edycja:dodano else warunek zakończenia przetwarzania, jeśli żaden z warunków daty nie jest spełniony.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12505, TNS:listener nie zna obecnie SID podanego w connect des

  2. System.Data.OracleClient wymaga oprogramowania klienckiego Oracle w wersji 8.1.7

  3. Indeksy Oracle i rodzaje indeksów w Oracle z przykładem

  4. Zapytanie Oracle Pivot daje kolumny z cudzysłowami wokół nazw kolumn. Co?

  5. Utwórz widok w ciągu 365 dni