Witam.
Mam procedurę w postgresie:
CREATE OR REPLACE FUNCTION my_procedure(numeric, numeric, timestamp without time zone)
Wywołuję ją w programie:
sql = "my_procedure";
cmd.CommandText = sql;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add(new NpgsqlParameter());
cmd.Parameters[0].NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Numeric;
cmd.Parameters[0].Value = Convert.ToInt32(batch.Parameters["clientNo"]);
cmd.Parameters.Add(new NpgsqlParameter());
cmd.Parameters[1].NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Numeric;
cmd.Parameters[1].Value = device_no;
cmd.Parameters.Add(new NpgsqlParameter());
cmd.Parameters[2].NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Timestamp;
cmd.Parameters[2].Value = Convert.ToDateTime(batch.Parameters["dateAssign"]);
cmd.ExecuteNonQuery();
Procedura działa bez problemu. Następnie z zachowaniem transakcji wykonuję kolejną operację:
cmd.CommandType = CommandType.Text;
cmd.Parameters.Clear();
sql = "SELECT * FROM client";
cmd.CommandText = sql;
int i = cmd.ExecuteNonQuery();
I tutaj wyrzuca mi błąd, że niby nie mam zdefiniowanej funkcji client, mimo tego że typ komendy to TEXT:
ERROR: 42883: function client(numeric,numeric,timestamp without time zone) does not exist.
Macie może jakiś pomysł ? Co robię źle?