ORA-01006,引号

时间:2017-07-11 15:03:30

标签: sql oracle dynamic plsql

我使用dbms_sql绑定了一些问题。用户创建语句并赋予它可以起作用以及绑定及其值。这意味着我对这个陈述一无所知。输入可以是

select salary from employee where name like '%:name%'

这会引发ORA-01006This post引出了我的原因:绑定在单引号内,因此它们被视为文字而非约束。

我写了一些代码来调整语句。但它仅适用于给定的示例('%<binding>%')。是否有任何方法(可能使用正则表达式)来解决引号内的所有绑定?

因此,如果输入类似于'<any pre content><binding><any post content>',则应将其修改为'<any precontent>''||<binding>||''<any post content>'(希望能够清除我的意愿)。

我不擅长使用正则表达式,所以我的解决方案非常不灵活:

l_sql := replace(l_sql, '%:'||p_name||'%', '%''||:'||p_name||'||''%');

BTW:我使用的是Oracle 11g。

0 个答案:

没有答案