Sql 甲骨文11g“;绑定变量不存在";
我在以下代码中遇到“ORA01006绑定变量在第15行不存在”错误:Sql 甲骨文11g“;绑定变量不存在";,sql,oracle,dynamic,plsql,Sql,Oracle,Dynamic,Plsql,我在以下代码中遇到“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
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_字符串值匹配
行“dbms_output.put_line(v_query_str);”打印一行:
从T1中选择COUNT(*),其中Col1类似“%:1%”
表中有10列是指定的类型
这里显然有一个bind变量(%1),所以我不知道发生了什么。像下面这样形成字符串
t.column_name || ' Like ''%''||:1||''%'''
绑定变量不应包含在单引号中,因为它将被视为字符串文字。因此,当您使用
时,使用的结果就是这个例外。谢谢。我做了那个更改,现在我得到了错误“ORA-01008:并非所有变量都绑定”。你能将你得到的查询粘贴到输出中吗?这次没有输出。太好了!非常感谢你!