作成日 2015.03.05
最終更新日 2015.03.05
概要
PostgreSQLデータベース・サーバのための、.NET データ・プロバイダNpgsqlのドキュメント(2014年7月25日・13改訂版)の和訳です。
旧版ドキュメント(外部サイト)
の和訳は存在しましたが、現行版のドキュメントのものは見つからなかったので和訳しました。
PostgreSQLとC#の両方を学ぶための資料集めの一環としての作成しています。
原文
npgsqlマニュアル(2014年7月25日・13改訂版)(外部サイト)
公式ページのドキュメントです。英語で書かれています。
関数呼び出し
Function calling
関数を呼び出すには、NpgsqlCommandオブジェクトのCommandTypeプロパティを、CommandType.StoredProcedureに設定します。 そして、あなたが、問合せ文字列として呼び出したい、関数の名前(CommandTextプロパティ)を渡します。
using System;
using System.Data;
using Npgsql;
// This example uses a function called funcC() with the following definition:
// この例は、次に示す定義で呼び出されたfuncC()関数を使用します:
// create function funcC() returns int8 as '
// int8を返すfuncC()関数を作成します。
// select count(*) from tablea;
// ' language 'sql';
// Note that the return type of select count(*) changed
// from int4 to int8 in 7.3+ versions. To use this function
// in a 7.2 server, change the return type from int8 to int4.
// select count(*)の戻り値の型が、int4からint8に、7.3+バージョンで変更されたことに注意します。
// int8からint4に戻り値型を変更します。
public static class NpgsqlUserManual
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection
("Server=127.0.0.1;Port=5432;User Id=joe;Password=secret;Database=joedata;");
conn.Open();
try
{
NpgsqlCommand command = new NpgsqlCommand("funcC", conn);
command.CommandType = CommandType.StoredProcedure;
Object result = command.ExecuteScalar();
Console.WriteLine(result);
}
finally
{
conn.Close();
}
}
}
PostgreSQL関数にパラメータを追加することは、わたしたちの先程の例によく似ています。 しかしながら、CommandText文字列を指定すると、あなたは、パラメータの名前を除外することができます。関数名だけを使用します:
using System;
using System.Data;
using Npgsql;
// This example uses a function called funcC with the following definition:
//この例は、次に示す定義で呼び出されたfuncC関数を使用します:
// create function funcC(int4) returns int8 as '
// funcC(int4)がint8を返す関数を作成します。
// select count(*) from tablea where field_int4 = $1;
// ' language 'sql';
public static class NpgsqlUserManual
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=joe;Password=secret;Database=joedata;");
conn.Open();
try
{
NpgsqlCommand command = new NpgsqlCommand("funcC", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new NpgsqlParameter());
command.Parameters[0].NpgsqlDbType = NpgsqlDbType.Integer;
command.Parameters[0].Value = 4;
Object result = command.ExecuteScalar();
Console.WriteLine(result);
}
finally
{
conn.Close();
}
}
}
このコードは、「tablea」と呼ばれるテーブルと少なくとも1つのフィールドを持つ「field_int4」と呼ばれるint4型を前提とします。