我刚刚开始学习 PL/SQL。在 stackoverflow 的帖子之后,我编写了一个脚本来搜索 Oracle 中的某个值,如下所示:
DECLARE
match_count INTEGER;
v_owner VARCHAR2(255);
v_search_value NUMBER;
BEGIN
v_owner:='USERA USERB';
v_search_value:=4823.0;
EXECUTE IMMEDIATE
'INSERT INTO TMP SELECT owner, table_name, column_name FROM all_tab_cols WHERE instr(:1, owner)>0 AND data_type like ''%NUMBER%''' USING v_owner;
commit;
FOR t IN (SELECT owner, table_name, column_name FROM TMP) LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '||t.owner||'.'||t.table_name||' WHERE '||t.column_name||'= :1'
INTO match_count
USING v_search_value;
IF match_count > 0 THEN
EXECUTE IMMEDIATE
'INSERT INTO RESULT VALUES(:1, :2, :3, :4)'
USING t.owner, t.table_name, t.column_name, match_count;
commit;
END IF;
END LOOP;
END;
在执行脚本之前已正确创建表 TMP 和 RESULT。但是,当我运行脚本时,我在第 12 行收到 ORA-01788 错误,提示“需要按子句连接”。我想知道为什么代码会导致此错误以及如何更改脚本以正确执行。谢谢!