0
私はPostgreSQL dbmsに接続するためにUbuntu上で.NET Npgsql
ライブラリを使用しています。私のデータベースでUbuntuで.NETを使用しているNpgsql:データベースクエリ結果をコンソールに書き込む方法は?
私はSETOF SELECT
クエリ結果を返すと宣言FUNCTION「user_plan()」、持っている:予想通り、私は、psqlの環境から直接すべての中華鍋をそれをテストする場合
CREATE FUNCTION user_plan(varchar(20), int) RETURNS SETOF user_plan_type AS
$$
SELECT pr.participant, t.talk_id, t.start_time, t.description, t.room
FROM talks t JOIN participant_registrations pr USING(event)
WHERE pr.participant=$1
ORDER BY 3
LIMIT $2;
$$ LANGUAGE SQL;
を。しかし、私はどちらか、このようNpgsql
ライブラリを使用して関数を呼び出すとき:
using (var query = new NpgsqlCommand())
{
query.Connection = conn;
query.CommandText = "SELECT user_plan(@user, @limit::int)";
query.Parameters.AddWithValue("user", login);
query.Parameters.AddWithValue("limit", limit);
using (var dr = query.ExecuteReader()) {
while(dr.Read()){
Console.Write("{0} \n", dr[0]);
}
}
}
またはこの方法:私はちょうど書きたかった
System.Collections.ListDictionaryInternal:
The field 'user_plan' has a type currently unknown to Npgsql (OID 16642).
You can retrieve it as a string by marking it as unknown, please see the FAQ.
:私は次のエラーを持っている
using (var query = new NpgsqlCommand())
{
query.Connection = conn;
query.CommandText = "SELECT user_plan(@user, @limit::int)";
query.Parameters.AddWithValue("user", login);
query.Parameters.AddWithValue("limit", limit);
using (var dr = query.ExecuteReader()) {
while(dr.Read()){
Console.WriteLine(dr.GetString(0));
}
}
}
user_plan()
クエリの結果セットをコンソール化します。どうしたらいいですか?
エラーが* *クエリについてです。クエリからユーザー定義型を返しますが、文字列として読み取るようにします(そうではありません)。これはConsoleやUbuntuとは関係ありません。 –
Ok、私はそれを理解しました。これは次のようになっているはずです: 'query.CommandText =" SELECT * FROM user_plan(@user、@limit :: int) "; – igor