« 基本的な使用法
PostgreSQL 関数 »

基本的な使い方

以下の例には、レガシーな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);
}
?>

関連キーワード:
query   基本的   PostgreSQL   使い方   list   assert   resource   return   relname   table   attnum   database   usename   Owner   encoding   user   usesysid   relkind   レガシー   MySQL   接続   データベース   バインド   needed   since
関連する関数・ページ:
pgsql.examples-basic   pgsql.examples   ffi.examples   swoole-mysql.query   function.pg-result-error-field   function.pg-result-error