ORACLE - 缺少关键字

时间:2015-06-28 21:28:37

标签: sql oracle plsql

我有以下查询,它显示了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;

错误是什么?

3 个答案:

答案 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;