基本的な使い方

以下の例には、レガシーな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.usesysid
ORDER 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.usesysid
WHERE
 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.attnum
FROM
 pg_class c,
 pg_attribute a
WHERE
 c.relname = '"
.$table."'
 AND a.attnum > 0 AND a.attrelid = c.oid
ORDER BY a.attnum;
"
;
    return 
pg_query($db$query);
}
?>

関連キーワード:  基本, 使い方, 関数, PostgreSQL, ユーザー, 定義,