我有以下查询,它显示了Oracle中缺少关键字的错误:
DECLARE
RESULT VARCHAR2(100);
n number;
BEGIN
for r in (SELECT TABLE_NAME FROM TST_REFRESH) LOOP
execute immediate 'select count(*) into n from ' || R.TABLE_NAME;
IF N = 0 THEN
dbms_output.put_line('Table Empty ' || r.TABLE_NAME);
ELSE
dbms_output.put_line('Table Not Empty' || r.TABLE_NAME);
END IF;
END LOOP;
END;
错误是什么?
答案 0 :(得分:2)
有几种方法可以从true
返回值。字符串中包含execute immediate
不是其中之一。
所以,你需要解决的一件事是这个电话。代替:
into n
答案 1 :(得分:0)
您的错误:您不必在查询中写入'into'。 但是你可以将它附加到你的'执行'调用上。 此查询应该有效:
@query := 'select count(*) from ' || R.TABLE_NAME;
execute immediate @query into n;
答案 2 :(得分:0)
以下是您正在考虑的示例代码
declare
result number;
n number;
begin
for r in (select table_name from user_tables where rownum < 3) loop
execute immediate 'select count(*) from ' || r.table_name
into n;
if n = 0 then
dbms_output.put_line('Table Empty ' || r.table_name);
else
dbms_output.put_line('Table Not Empty cont ' || n || ' : ' || r.table_name);
end if;
end loop;
end;