我被动态 sql 和引号绊倒了。当我 dbms_output sql_stmt 时,它输出有效/工作代码。应该如何编写 sql_stmt := 行以便我可以动态执行它?我也尝试过“:1 using”绑定变量语法,但没有运气。
这段代码的重点是收集表子集的统计信息。
set serveroutput on
--create this test table for working example.
--create table test3 as select table_name from user_tables where rownum <= 5;
declare
sql_stmt varchar2(500);
begin
for rec in (select table_name from test3)
loop
sql_stmt := 'exec dbms_stats.gather_table_stats (''SCOTT'',''' || rec.table_name || ''')';
dbms_output.put_line(sql_stmt);
execute immediate sql_stmt; -- <---Error is here---
end loop;
end;
我从立即执行 sql_stmt 得到的错误;行是:ORA-00900:无效的 SQL 语句 ORA-06512:在第 8 行