1

次のテーブルがあります。

  • レベルの従業員(ランクまたは wtv と呼ぶことができます): 所得値、id など。
  • ランク対収入の値を格納するINCOME (非常に小さく静的)
  • 次の列を持つREGIST_INCOMEテーブル:
    • ID_REG;
    • ID_EMPLOYEE;
    • MONTH_and_Year_OF_PAYMENT DATE (yy.mm にフォーマットしたい);
    • DATE_OF_PAYMENT DATE (形式は yy.mm.dd);
    • 所得; /*これは INCOME に登録されている収入に等しい */.

月の斧の日にレジストリ/行を生成する関数を作成したいと考えています。
次のように: 毎年 8 日に、テーブル REGIST_INCOME に、まだ活動している (別名、まだ働いている) 従業員ごとに行を追加します。

ID_REG | ID_EMPLOYEE  | MONTH_and_Year_OF_PAYMENT | PAYMENT DATE
--------------------------------------------------------------------
1      | 121          | 10.01                     | NULL
2      | 20345        | 10.01                     | NULL 

... 等々...

Java では、現在の日付を取得して PAYMENT DATE に入れるボタンをクリックしたいので、単純なものが必要です。基本的に、登録を「自動的に」生成してから、支払い日だけを確認したいと考えています。

オラクルの日付変換と日付関数に焦点を当てた例をいただければ幸いです。

4

1 に答える 1

1

次のような定期的にスケジュールされたジョブを作成または作成しようとしました。

declare
  lv_job number;
  lv_proc varchar2(1000);
  begin_date   DATE := to_date('10.01.08');
  begin
  lv_proc:='begin regIncomePerMonth; end;';
  dbms_job.submit(lv_job,
  lv_proc,
  begin_date,
  'begin_date+30'
  );
  dbms_output.put_line('the job created with job number: '|| lv_job);
  exception
  when others then
  dbms_output.put_line('error'||sqlcode||sqlerrm);
end;

http://oracle.ittoolbox.com/documents/regularly-scheduled-plsql-procedure-14568を参照してください)しかし、これは常に8Jan + 30になるため、このようにすることはできません.8Janで開始し、 12月まで30日ステップで進みます。

私の手順は次のとおりです。手順regIncomePerMonthを作成または置換します

カーソル activeemps は、 f.removed != 1 および f.escalao = s.escalao である funcionario f 、 salario s から f.id_pessoa、f.escalao、s.salario_actual を選択します。

始める

for emp in activeemps loop
    INSERT INTO registo_salarial values(S_REGISTO_SALARIAL.nextval,emp.id_pessoa,
    trunc(sysdate,'MM'),emp.salario_actual,NULL);
end loop;

終わり;

于 2010-01-26T06:18:58.137 に答える