动态 PLSQL 中的错误绑定变量

Posted

技术标签:

【中文标题】动态 PLSQL 中的错误绑定变量【英文标题】:Error binding variable in dynamic PLSQL 【发布时间】:2012-04-24 00:34:26 【问题描述】:

我的 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】:

试试这样:

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%';

【讨论】:

感谢工作! ...为什么绑定变量在引号之间无法识别?

以上是关于动态 PLSQL 中的错误绑定变量的主要内容,如果未能解决你的问题,请参考以下文章

sql select语句作为动态plsql块的绑定变量

如何为 SqlDataSource 动态绑定变量参数

PLSQL绑定变量和宿主变量有啥区别

Oracle之绑定变量 2

PLSQL使用绑定变量

SP2-0552:未声明绑定变量“NEW”