Ниже приведен запрос postgresql с pg admin iii. (Ниже запрос работает нормально с пг админ и возвращает результирующий набор без каких-либо вопроса)Передача 2D-массива из функции C# в Postgresql
select * from pg_sp_getmainrates_11(9,10,array[[5,10,10,10],[30,20,15,16]]);
Здесь параметр декларирование функции пг.
CREATE OR REPLACE FUNCTION pg_sp_getmainrates_11(
IN fromcountryid integer,
IN tocountryid integer,
IN alldimensions_we_le_he_wi double precision[]
)
-- My logic is going here
Но при передаче массива с использованием кода C# он возвращает ошибку при выполнении запроса.
Exeption атрибуты
Basemessage: ошибка синтаксиса или вблизи ""
ErrorSql: SELECT * FROM pg_sp_getmainrates_11 (9,10, System.Double [,])
Вот мой C# код.
double[,] codes = new double[,]
{
{ 5,10,10,10},{ 30,20,15,16}
};
string quy = "pg_sp_getmainrates_11(" + FromCountryId +
"," + ToCountryId +
"," + codes + ")";
NpgsqlCommand command = new NpgsqlCommand(quy, conn);
command.CommandType = CommandType.StoredProcedure;
NpgsqlDataReader dr = command.ExecuteReader();
Мне нужно небольшое направление, чтобы передать массив (например, выше) в мою функцию postgresql.
Ваш массив C#: '{{}, {}}' ваш массив postgresql: '[[], []]'. Никто не будет преобразовывать его для вас, если вы не скажете компилятору сделать такое преобразование. Более того, postgresql не обрабатывает то же самое для 'array' и' int [] 'или' numeric [] '. вы можете называть их одинаковыми, но они не совпадают. Поэтому ваше определение для массива в C# как double [,] должно быть отлито для правильного типа в postgresql. – java
Спасибо @java – weeraa