【发布时间】:2021-05-25 20:03:35
【问题描述】:
当我执行以下代码时,sql 命令没有正确结束。 我正在使用它来查找字符串的匹配列。
DECLARE
match_count INTEGER;
BEGIN
FOR t IN (SELECT table_name, column_name FROM all_tab_cols where owner=v_owner and data_type = v_data_type) LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '||t.table_name||' WHERE lower('||t.column_name||') like :1'
INTO match_count
USING 'XRWJ01';
IF match_count > 0 THEN
dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
END IF;
END LOOP;
END;
/
【问题讨论】:
-
您使用的是 MySQL 还是 Oracle? (该代码不会在两者上运行。)
-
将字符串保存到参数并打印出参数。当您看到正在执行的内容时,这些问题通常很明显。
-
请发布您正在运行的实际代码。您发布的代码在到达“SQL 命令未正确结束”之前很久就引发了其他错误。例如,您必须在代码中使用未声明的变量。这将是解析器标记的第一个错误。发布简化代码是可以的,但前提是它与原始代码有相同的问题。 在此处发布之前更改您的代码,直到它引发与您抱怨的相同的错误;否则就是一团糟。
标签: sql oracle plsql procedure