日期:2014-05-17  浏览次数:21106 次

错误提示:FROM keyword not found where expected不知问题何在
在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

就是不知道毛病出在哪里?请大侠们指正。


------解决方案--------------------
SQL code
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为空格)

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