我在以下代码中收到“ ORA01006绑定变量在第15行不存在”错误:
DECLARE v_search_string varchar2(4000) := 'OK'; v_query_str VARCHAR2(4000); match_count integer; BEGIN FOR t IN (SELECT owner, table_name, column_name FROM all_tab_columns WHERE data_type in ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') And TABLE_NAME = 'T1' And OWNER = 'O1') LOOP Begin v_query_str := 'SELECT COUNT(*) FROM '|| t.table_name || ' WHERE ' || t.column_name || ' Like ''' || '%:1%' || ''''; dbms_output.put_line(v_query_str); EXECUTE Immediate v_query_str INTO match_count USING v_search_string; IF match_count >= 0 THEN dbms_output.put_line( t.owner || '.' || t.table_name ||' '||t.column_name||' '||match_count ); END IF; END; END LOOP; END;
我只是试图遍历表中的所有字符列,并计算每个字符列中与v_search_string值匹配的值。
行“ dbms_output.put_line(v_query_str);” 打印一行:SELECT COUNT(*)FROM T1 WHERE Col1 Like’%:1%’
表中有10列是指定的类型。
显然那里有一个绑定变量(%1),所以我不知道发生了什么。
如下所示形成字符串。
t.column_name || ' Like ''%''||:1||''%'''
绑定变量不应包含在单引号中,因为它将被视为String文字。因此,当您使用USING它时,便以这种排他性告终。
USING