基本的な使い方
以下の例には、レガシーなMySQL関数に似た、ユーザー定義関数が含まれています。
例1 PostgreSQL のユーザー定義関数の例
<?php// この関数は、PostgreSQL 接続がデータベースにバインドしているので必要// This function should be needed, since PostgreSQL connection binds database.function pg_list_dbs($db){ assert(is_resource($db)); $query = 'SELECT d.datname as "Name", u.usename as "Owner", pg_encoding_to_char(d.encoding) as "Encoding"FROM pg_database d LEFT JOIN pg_user u ON d.datdba = u.usesysidORDER BY 1;'; return pg_query($db, $query);}// テーブルを一覧にするfunction pg_list_tables($db){ assert(is_resource($db)); $query = "SELECT c.relname as \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as \"Type\", u.usename as \"Owner\"FROM pg_class c LEFT JOIN pg_user u ON c.relowner = u.usesysidWHERE c.relkind IN ('r','v','S',) AND c.relname !~ '^pg_'ORDER BY 1;"; return pg_query($db, $query);}// pg_meta_data() も参照してください。フィールド定義を配列で返します。function pg_list_fields($db, $table){ assert(is_resource($db)); $query = "SELECT a.attname, format_type(a.atttypid, a.atttypmod), a.attnotnull, a.atthasdef, a.attnumFROM pg_class c, pg_attribute aWHERE c.relname = '".$table."' AND a.attnum > 0 AND a.attrelid = c.oidORDER BY a.attnum;"; return pg_query($db, $query);}?>