请帮忙写一个函数,我写不下去了,拜托!!

lishuguang 2004-01-09 05:35:37
我想在ORACLE8I中写一个函数,这个函数有两个参数,一个是表名,一个是字段名
然后我根据这两个参数,组合成一个SQL语句,
'select max('||field_name || 'into '|| instanceid ||'from '|| tab_name ';
我在这个函数中应该怎样写:
create or replace function getbh(tab_name in varchar2,field_name in varchar2) return number is
instanceid:=0 number;
begin
在这里我应该怎样执行上面组合的SQL语句??

return instanceid;

end;
...全文
29 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishuguang 2004-01-10
  • 打赏
  • 举报
回复
谢谢楼上的朋友,我修改了一下后:
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有什么不同??



bzszp 2004-01-09
  • 打赏
  • 举报
回复
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;
/

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧