使用存储在变量中的值在oracle中构建select语句

时间:2015-01-16 18:40:42

标签: database oracle plsql

有没有办法使用存储在变量中的值在oracle中构建select语句? 例如,你可以这样做:

 declare 
 tbl_var varchar2(10) := "map_set";

begin
select count(*) from tbl_var;
end;

1 个答案:

答案 0 :(得分:3)

是的,使用execute immediate:

declare 
 tbl_var varchar2(10) := 'map_set';
 result number;

begin
execute immediate 'select count(*) from '||tbl_var into result; --save result into variable
dbms_output.put_line('Total rows:'||result); --print result
end;

第二种方法,您可以创建一个接收表名作为参数的函数并返回计数:

create function get_count(tbl_var varchar2) return number is 

 result number;

begin
execute immediate 'select count(*) from '||tbl_var into result;
return result;
end;

创建函数后,您可以像这样查询:

select get_count('map_set') from dual;