LINUX.ORG.RU

PQexecParams() возвращает ERROR: invalid input syntax for type date: «»

 ,


0

1

Доброго времени суток! Подскажите, пожалуйста,как в качестве параметра передавать 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";
}
То в возвращаемой ошибке получаю: ERROR: invalid input syntax for type date: «NULL»

Не пробовал вместо fr_dt передавать nullptr?

Aswed ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.