Вызывается: org. postgresql .util.PSQLException: ОШИБКА: столбец "imagesync __ c" имеет тип boolean, но выражение имеет тип символов, меняющихся - PullRequest
0 голосов
/ 27 марта 2020

Я использую WSO2 Report Mediator для вставки записей в postgreSql Таблицу. такая проблема, как столбец "imagesync __ c" имеет тип boolean, но выражение имеет тип символов различный

FYI,

  • DataType для столбец " imagesync __ c" равен bool и с использованием DBeaver 6.1.2

    <property name="syncFlag" scope="default" type="BOOLEAN" value="true"/>
    <dbreport description="Insert into product2">
                <connection>
                    <pool>
                        <dsName>jdbc/QRSagAppSyncDataSource</dsName>
                    </pool>
                </connection>
                <statement>
                    <sql><![CDATA[INSERT INTO vonbibra_dev.product2(productcode,db_lastmodifiedbyuser,imagesync__c,sourcename__c)VALUES(?, ?,?,?,?)]]></sql>
                    <parameter type="VARCHAR" value="CarSales"/>
                    <parameter type="VARCHAR" value="qrsintegration"/>
                    **<parameter type="VARCHAR" expression="get-property('syncFlag')"/>**
                    <parameter type="VARCHAR" value="CarSales"/>
                </statement>
      </dbreport>
    

У меня есть попробовал некоторые кастинги, которые упомянуты ниже для этого конкретного столбца, к сожалению, ни один из них не работает.

  • способы кастинга

    <parameter value="select get-property('syncFlag')::boolean" type="VARCHAR"/>
    <parameter value="CAST(get-property('syncFlag') as BOOLEAN)" type="VARCHAR"/>
    <parameter type="VARCHAR" value="1"/>
    <parameter type="VARCHAR" value="SELECT DECODE(get-property('syncFlag'), 'false', '0', 'true', '1' )::BOOLEAN"/>
    

Ссылки:

Функция CAST

TypeCasting

Cast VARCHAR в булево

1 Ответ

0 голосов
/ 30 марта 2020

Я решил проблему с помощью CASTING в sql Запрос вместо входного параметра .

<property name="syncFlag" scope="default" type="BOOLEAN" value="true"/>
<dbreport description="Insert into product2">
            <connection>
                <pool>
                    <dsName>jdbc/QRSagAppSyncDataSource</dsName>
                </pool>
            </connection>
            <statement>
                <sql><![CDATA[INSERT INTO vonbibra_dev.product2(productcode,db_lastmodifiedbyuser,imagesync__c,sourcename__c)VALUES(?, ?,?,?::BOOLEAN,?)]]></sql>
                <parameter type="VARCHAR" value="CarSales"/>
                <parameter type="VARCHAR" value="qrsintegration"/>
                **<parameter type="VARCHAR" expression="get-property('syncFlag')"/>**
                <parameter type="VARCHAR" value="CarSales"/>
            </statement>
  </dbreport>
...