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 表名
这个表名能够用输入变量来代替,这样就可以省很多工作量。
各位大佬帮帮忙
...全文
11753打赏收藏
oracle 自定义函数 如何把查询语句的表名改成变量
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 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;
用动态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;