create or replace function getbh(tab_name in varchar2,field_name in varchar2) return number is
instanceid:=0 number;
v_str varchar2(4000);
begin
v_str:='select max('||field_name || 'into '|| instanceid ||'from '|| tab_name ';
execute immedate v_str into instanceid;
return instanceid;
end;
/
instanceid:=0 number;
v_str varchar2(4000);
begin
v_str:='select max('||field_name || 'into '|| instanceid ||'from '|| tab_name ';
execute immedate v_str into instanceid;
return instanceid;
end;
/
create or replace function getbh(tab_name in varchar2,field_name in varchar2) return number is
instanceid number :=0;
v_str varchar2(4000);
begin
v_str:='select max('||field_name || 'into '|| instanceid ||'from '|| tab_name;
execute immedate v_str into instanceid;
return instanceid;
end;
我执行select getbh('dept','deptno') from dual;报告如下错误:
ERROR 位于第 1 行:
ORA-00905: 缺少关键字
ORA-06512: 在"SCOTT.GETBH", line 6
ORA-06512: 在line 1
然后我修改v_str:='select max('||field_name || 'from '|| tab_name;
程序运行正确,我现在不明白,在这里的SQL语句为什么不能用into给instanceid赋值??
并且它和下面的语法有什么不同吗?
create or replace function getbh(tab_name in varchar2,field_name in varchar2) return number is
instanceid:=0 number;
begin
select max(deptno) into instanceid from dept;
return instanceid;
end;
这种执行方式和execute immedate v_str有什么不同??