<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/pgsql.examples.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'pgsql.examples-queries.php',
    1 => '基本的な使い方',
    2 => '基本的な使い方',
  ),
  'up' => 
  array (
    0 => 'pgsql.examples.php',
    1 => '例',
  ),
  'prev' => 
  array (
    0 => 'pgsql.examples-basic.php',
    1 => '基本的な使用法',
  ),
  'next' => 
  array (
    0 => 'ref.pgsql.php',
    1 => 'PostgreSQL 関数',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/pgsql/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="pgsql.examples-queries" class="section">
  <h2 class="title">基本的な使い方</h2>
  <p class="para">
   以下の例には、レガシーなMySQL関数に似た、ユーザー定義関数が含まれています。

   <div class="example" id="example-1">
    <p><strong>例1 PostgreSQL のユーザー定義関数の例</strong></p>
    <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #FF8000">// この関数は、PostgreSQL 接続がデータベースにバインドしているので必要
// This function should be needed, since PostgreSQL connection binds database.
</span><span style="color: #007700">function </span><span style="color: #0000BB">pg_list_dbs</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">assert</span><span style="color: #007700">(</span><span style="color: #0000BB">is_resource</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">));
    </span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #DD0000">'
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;
'</span><span style="color: #007700">;
    return </span><span style="color: #0000BB">pg_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">, </span><span style="color: #0000BB">$query</span><span style="color: #007700">);
}

</span><span style="color: #FF8000">// テーブルを一覧にする
</span><span style="color: #007700">function </span><span style="color: #0000BB">pg_list_tables</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">assert</span><span style="color: #007700">(</span><span style="color: #0000BB">is_resource</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">));
    </span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #DD0000">"
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;
"</span><span style="color: #007700">;
    return </span><span style="color: #0000BB">pg_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">, </span><span style="color: #0000BB">$query</span><span style="color: #007700">);
}

</span><span style="color: #FF8000">// pg_meta_data() も参照ください。フィールド定義を配列で返します。
</span><span style="color: #007700">function </span><span style="color: #0000BB">pg_list_fields</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">, </span><span style="color: #0000BB">$table</span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">assert</span><span style="color: #007700">(</span><span style="color: #0000BB">is_resource</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">));
    </span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #DD0000">"
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 = '"</span><span style="color: #007700">.</span><span style="color: #0000BB">$table</span><span style="color: #007700">.</span><span style="color: #DD0000">"'
 AND a.attnum &gt; 0 AND a.attrelid = c.oid
ORDER BY a.attnum;
"</span><span style="color: #007700">;
    return </span><span style="color: #0000BB">pg_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$db</span><span style="color: #007700">, </span><span style="color: #0000BB">$query</span><span style="color: #007700">);
}
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

   </div>
  </p>
 </div><?php manual_footer($setup); ?>