在动态PLSQL中绑定变量时出错

时间:2012-04-24 00:34:26

标签: data-binding plsql oracle10g dynamic-sql

我的sqlQuery是这样的:

sqlQuery := 'SELECT sa.nombre_archivo, sha.registrosok, sha.registroserroneos,'||
            ' sha.registrosinconsistentes,'||
            ' (sha.registrosok+sha.registroserroneos+sha.registrosinconsistentes),'||
            ' sha.fechaprocesamiento'||
              ' FROM src_historialarchivo sha, src_archivo sa, src_usuario su'||
            ' WHERE sa.idarchivo = sha.idarchivo'||
              ' AND sa.nombre_archivo LIKE ''%:1%'''||
              ' AND sa.idusuario = su.idusuario'||
              ' AND isvalidrange(sha.fechaprocesamiento,:2,:3) = ''T'''||
            ' ORDER BY to_date(sha.fechaprocesamiento, ''DD/MM/YYYY'')';

但是绑定变量:1似乎存在问题,如何解决? 引发的错误是java.sql.SQLException: ORA-01006

1 个答案:

答案 0 :(得分:2)

试试这样:

sqlQuery := 'SELECT sa.nombre_archivo, sha.registrosok, sha.registroserroneos,'||
            ' sha.registrosinconsistentes,'||
            ' (sha.registrosok+sha.registroserroneos+sha.registrosinconsistentes),'||
            ' sha.fechaprocesamiento'||
              ' FROM src_historialarchivo sha, src_archivo sa, src_usuario su'||
            ' WHERE sa.idarchivo = sha.idarchivo'||
              ' AND sa.nombre_archivo LIKE :1'||
              ' AND sa.idusuario = su.idusuario'||
              ' AND isvalidrange(sha.fechaprocesamiento,:2,:3) = ''T'''||
            ' ORDER BY to_date(sha.fechaprocesamiento, ''DD/MM/YYYY'')';

execute immediate sqlQuery using '%abc%';