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;
    

    おそらく、日曜日でも月の3日でもない場合、またはnew_customersの場合を処理するために、さらにいくつかのコードがあります。 テーブルが存在しません。

    編集:elseを追加 どちらの日付条件も満たされない場合、処理を終了する条件。




    1. ポリゴンPHPでポイントを検索

    2. Oracle / PL SQLでRSAを使用する方法はありますか?

    3. データベースの破損はどのように発生しますか?

    4. MySQLは、最新のコメントまたは最後の投稿による投稿を注文します