始める無料で始める

DO ステートメントを書こう

データクレンジングでは、不正な日付が含まれているデータを受け取ることがよくあります。これにより例外が発生し、SQL ステートメントが停止してしまいますが、例外ハンドラー付きの DO 関数を使えば、処理を最後まで実行できます。ここでは、patients テーブルの created_on 列でそのような例外をどのように扱うかを見ていきます。あわせて、DO 形式の関数も使ってみましょう。

この演習はコースの一部です

PostgreSQL におけるトランザクションとエラー処理

コースを見る

演習の手順

  • 例外を捕捉するための DO 関数を作成します。
  • トランザクションを BEGIN し、patients に行(a1c = 5.8glucose = 89fasting = TRUEcreated_on = '37-03-2020 01:15:54')を INSERT します。
  • EXCEPTION ハンドラーを追加し、エラー時には errors テーブルの detail 列に 'bad date' を挿入します。
  • 言語は 'plpgsql' を指定します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

-- Create a DO $$ function
____ ____
-- BEGIN a transaction block
BEGIN 
    INSERT INTO patients (a1c, glucose, fasting, created_on) 
    VALUES (____, ____, ____, '37-03-2020 01:15:54');
-- Add an EXCEPTION
___
-- For all all other type of errors
WHEN others THEN 
    INSERT INTO errors (msg, detail) 
    VALUES ('failed to insert', '____');
END;
-- Make sure to specify the language
$$ language '____';

-- Select all the errors recorded
SELECT * FROM errors;
コードを編集して実行