PL/pgSQL
多数あるテーブルのレコードの中から、不正な値を持つテーブルを抽出するストアドを作る。
やりたいこと
USER_TABLEのレコードの中からdept_noがDEPT_TABLEにない(所属が不明)なデータを抽出する。もちろんSQLだけで実現可能だけど、ストアドを書く練習と,よく使うテーブルのデータチェックを定型化できるようにストアドで実行する。
テストテーブル
USER_TABLE
DEPT_TABLE
書き方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
CREATE OR REPLACE FUNCTION user_table_check() RETURNS TABLE( user_id integer ,user_name varchar ,dept_no integer ,start_date integer ,end_date integer ) AS $BODY$ BEGIN RETURN QUERY SELECT us.* FROM user_table us LEFT JOIN dept_table dept ON us.dept_no = dept.dept_No WHERE dept.dept_no IS null; --上記クエリでdept_tableのdept_noに紐づかないデータを抽出する。 END; $BODY$ LANGUAGE plpgsql; select * from user_table_check(); |
コメント