0

「;」を含むSQLステートメントで(1java.sql.SQLSyntaxErrorException: ORA-00911: invalid character )呼び出しを行うときに遭遇した人はいますか (セミコロン) 文字が途中にあります。ここで提案されているように、末尾のセミコロンがORA-00911を引き起こすことを認識しているので、すでにそれらを取り除いています)sql.execute('...')

以下は、そのような SQL ステートメントの 1 つの例です。

INSERT INTO metadata_property_qualifier(id,version,metadata_property_id,name,overridable,propagated,to_instance,to_subclass,translatable,type,value,value_type)
    VALUES (mpr_qualifier_sequence.nextval,0,(select id from metadata_property where metadata_class_id
    IN (select id from metadata_class where name = 'UIM_DXTPMLanSwitchError')
    AND metadata_property.name='CollisNumberValidity'),'ValueMap',0,0,0,0,0,'[Ljava.lang.String;',unistr('0\00a31'),19)

特徴があることに注意し [Ljava.lang.String;てください;。セミコロンをエスケープする方法や、何らかの方法で回避する方法はありますか?

コードスニペット:

sqlFile.eachLine() {
    log.info it
    if(!it.startsWith('--') && !it.trim().isEmpty()) {
        try {                       
            sql.execute(it - ';')
        } catch(ex) {
            log.error ex
            log.info "Rolling back the transaction..."
            sql.dataSource.connection.rollback()
        }
    }
}
4

1 に答える 1

0

-(マイナス)を使用すると、最初に出現したものだけが置き換えられます。SQL に複数のセミコロンがある場合は、replaceAll().

于 2015-08-09T02:52:11.760 に答える