在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和表名连在一起了 所以语句查询的时候就会提示找不到关键字。