PL/pgSQL
前回は1つのSELECT文を登録するだけで実効性がなかったので、今回はテーブルをJOINして複雑なSELECT文を呼び出せるようストアドに登録していく。
やりたいこと
2つのテーブルを結合して、USER_TABLEにDEPT_TABLEのdept_nameを持ってきたい。
複雑なSQLを登録する方法法を記録するので、SQL自体はJOINした単純なものにする。
USER_TABLE(テーブル1)
DEPT_TABLE(テーブル2)
書き方
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_dept_join () --returnするカラムの型を記載 RETURNS TABLE ( user_id integer ,user_name varchar ,dept_no integer ,dept_name varchar ) AS $body$ BEGIN RETURN QUERY --ここにSQLを記載。カラムの型がRETURN TABLEの型と合うように。 SELECT us.user_id,us.user_name,us.dept_no,dept.dept_name FROM user_table us INNER JOIN dept_table dept ON us.dept_no = dept.dept_no; END; $body$ LANGUAGE plpgsql; SELECT * FROM user_dept_join (); --呼び出し |
結果
とりあえず、複数テーブルを使ったSELECT文が登録できた。
コメント