PQexecParams() возвращает ERROR: invalid input syntax for type date: «»
Доброго времени суток! Подскажите, пожалуйста,как в качестве параметра передавать NULL если в переменной пустая строка? У меня такой код:
string new_data = "some new data";
string fr_dt = obj.getDate();
const char *c_new_data = new_data.c_str();
const char *c_fr_dt = fr_dt.c_str();
const char* ins_data_com = "select * from ins_data($1,$2);
int nParams = 2;
const char *const paramValues[] = {c_new_data,c_fr_dt};
const int paramLengths[] = {sizeof(c_new_data),sizeof(c_fr_dt)};
const int paramFormats[] = {0,0};
int resultFormat = 0;
PGresult res_com = PQexecParams(conn,ins_data_com,
nParams, NULL, paramValues, paramLengths, paramFormats, resultFormat);
и код в pgsql:
CREATE OR REPLACE FUNCTION ins_data(in_data text, in_date date)
RETURNS int
LANGUAGE plpgsql
AS $function$
DECLARE n_id int;
BEGIN
WITH cte AS (
INSERT INTO public.my_table
(new_data, time_in)
VALUES(in_data, coalesce(in_date::timestamp,current_timestamp))
RETURNING id AS new_id
)
SELECT new_id INTO n_id FROM cte;
RETURN n_id;
END;
$function$
;
Если добавляю проверку на пустую строку:
if (fr_dt.empty()) {
fr_dt = "NULL";
}