oracle 自定义函数 如何把查询语句的表名改成变量

起风从此散长安 2018-03-09 05:12:51
create or replace function approval(tablename varchar2)
return varchar2
as
fname varchar2(30);
begin
select name into fname from tablename where id=1
return fname;
end approval;


如上,比如我想在oracle里面自定义一个函数,函数可以输入表名,可以从不同表中查询到id为1的这条记录的name字段。
当然这个只是随便写的逻辑。
但是主要的功能就是能让select * from 表名
这个表名能够用输入变量来代替,这样就可以省很多工作量。
各位大佬帮帮忙
...全文
1162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把select name into fname from tablename where id=1 写成动态sql就可以了 VSQL := 'select name into :PAR1 from :PAR2 where id=1' EXECUTE IMMEDIATE VSQL INTO fname USING tablename;
Mricoo_周 2018-03-10
  • 打赏
  • 举报
回复
楼主:1L正解
liu志坚 2018-03-09
  • 打赏
  • 举报
回复
用动态sql可以,如下: create or replace function approval(tablename varchar2) return varchar2 as fname varchar2(30); v_sql1 varchar2(500); begin v_sql1:='select name from '||tablename||' where id=1'; dbms_output.put_line(v_sql1); execute immediate v_sql1 into fname; return fname; end approval;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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