私はPostgresデータベースの私のC#コードで42883:関数が存在しません - Postgresの関数の呼び出しEntity FrameworkのC#のNpgsqlで
CREATE OR REPLACE FUNCTION "thisSearchList"(IN searchstring text)
RETURNS TABLE(q_description text, q_barcode text) AS
$BODY$
SELECT q_description, q_barcode
FROM q_product
WHERE q_description like $1
OR q_barcode like $1
$BODY$
LANGUAGE sql VOLATILE
COST 100
ROWS 1000;
に以下の機能を持っている私が利用するために、次のコードを持っているが
機能を言いましたアプリケーションを実行するにはNpgsqlConnection connection = new NpgsqlConnection("Host=192.168.0.52;Database=bolo;Username=western;Password=western");
connection.Open(); /*OPEN DATABASE CONNECTION*/
NpgsqlCommand cmd = new NpgsqlCommand("thisSearchList", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@string", NpgsqlTypes.NpgsqlDbType.Text);
cmd.Parameters["@string"].Value = searchValue.ToUpper();
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var prod = new ProductViewModel();
prod.q_description = dr["q_description"].ToString();
prod.q_barcode = dr["q_barcode"].ToString();
model.Add(prod);
}
- 検索テキストボックスにユーザーの種類と機能をトリガ、ビュー/ページに表示される製品のリストを返すように検索をクリック:私は
次のエラーを取得しますグーグルを通して私の理解からNpgsqlDataReader dr = cmd.ExecuteReader();
のソースと
42883: function thissearchlist(string := text) does not exist
、Postgresは文字列やテキストの問題がある可能性があります! dbで定義されているテキストではなくパラメータ文字列を持つ関数を探しているところです(ポストグルでは文字列ではなく文字列しか定義できません)。機能とパラメータを渡すとき、それは(テキストパラメータを使用して)適切な関数を取得して呼び出された場合しかし、その後、このライン
cmd.Parameters.Add("@string", NpgsqlTypes.NpgsqlDbType.Text);
は、問題を解決したでしょうwouldntの?この時点で私は何が欠けているのですか、そうしないとpostgres関数をこのように呼び出すことはできません。
同じユーザ "western"を使用すると、plsqlコンソール/ pgadminのストアドプロシージャを正常に呼び出せますか? (つまり、西洋は機能に関する実行権を持っています) – JGH
はいできます。 "western"はすべての権利を持つスーパーユーザーです。 – LavsTo