在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就是不知道毛病出在哪里?请大侠们指正。
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就是不知道毛病出在哪里?请大侠们指正。
--问题在这里, 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为空格)
declare
这两个多余了吧 去掉
的确,既然有begin ,declare应该就不能再有了。