ORA-00917 экранирование Апострофа в sql-запросе


Приведенный ниже код прекрасно работает в большинстве случаев. Он взрывается, когда LIB_SEGCO имеет какие-либо одинарные кавычки такие как ABC'DEF

В этих случаях он дает ошибку ORA-00917: отсутствует запятая

req := 'INSERT INTO CLIENTS(
                    IDEVT,
                    ID_CLIENT,
                    CATEGORIE_CLIENT,
                    SEGCO,
                    LIB_SEGCO,
                    NOM,
                    ADRESSE,
                    CODE_POSTAL,
                    VILLE,
                    PAYS,
                    STATUT) 
                    values(''' || UNID ||''','''||ID||''','''||SEGCO||''','''||L_SEGCO ||''','''||**LIB_SEGCO** ||''','''|| NOM||''','''||
                    ADRESSE||''','''||CODE_POSTAL||''','''||cVILLE||''','''||PAYS||''','''||CODE_STATUT||''')';

         execute immediate req;

Есть идеи избежать Апострофа, когда он передается в переменной?

Спасибо

1 3

1 ответ:

Использование:

req := q'{INSERT INTO CLIENTS(
                    IDEVT,
                    ID_CLIENT,
                    CATEGORIE_CLIENT,
                    SEGCO,
                    LIB_SEGCO,
                    NOM,RCS_ADRESSE,
                    CODE_POSTAL,
                    VILLE,
                    PAYS,
                    STATUT) 
                    values( :1, :2, :3, :4, :5, :6
                             :7, :8, :9, :10)}';

         execute immediate req
         USING  UNID  , ID , SEGCO , L_SEGCO  , LIB_SEGCO ,
                NOM , ADRESSE , CODE_POSTAL , cVILLE , PAYS ;

Примечание: I ommited , CODE_STATUT, потому что в команде INSERT указано только 10 столбцов, но CODE_STATUT является 11-м, поэтому количество столбцов не совпадает с количеством значений.