在pl/sql中学习oracle。编了一个函数gettablecount,内容如下所示:
create or replace function gettablecount(table_name varchar2) return number as
begin
declare record_count number;
query_sql varchar2(200);
begin
query_sql:='select count(1) from' || table_name ;
execute immediate query_sql into record_count;
return record_count;
end;
end gettablecount;
现想验证函数功能,便运行以下程序:
SQL> declare table_name varchar2(50);
  2  begin
  3  table_name:='employees';
  4  dbms_output.put_line('表' || table_name || '的记录数为' ||  gettablecount(table_name));
  5  end;
  6  /结果提示出错为:
ORA-00923: FROM keyword not found where expected
ORA-06512: at "SYSTEM.GETTABLECOUNT", line 7
ORA-06512: at line 5就是不知道毛病出在哪里?请大侠们指正。

解决方案 »

  1.   

    query_sql:='select count(1) from' || table_name ;
    --问题在这里, from 与表名之间缺少一个空格
    --拼出来的的SQL就成了
    SELECT COUNT(1) fromemployees;
    --修改如下:query_sql:='select count(1) from ' || table_name ;--加空格
    query_sql:='select count(1) from' || chr(32)|| table_name ;--chr(32为空格)
      

  2.   

    语法不正确吧。  from 后面没有空格导致 from和表名连在一起了  所以语句查询的时候就会提示找不到关键字。
      

  3.   

    还有begin
       declare
    这两个多余了吧 去掉
      

  4.   

    from 后面是不是少空格啊?
      

  5.   


    的确,既然有begin ,declare应该就不能再有了。