PLSQL:返回任意选择列的函数

沙特

使尽可能简单,而不是创建几个函数,例如:

get_emp_name( 123 );
get_emp_age( 123 );

...

我想创建一个plsql函数,我可以指定要过滤的列,如下所示:

get_emp(employee.column_name, employee.ID )

例子:

get_emp(employee.name,123); -- it will return 'John'
get_emp(employee.age,123): -- it will return 40

这将使我可以轻松地创建一个函数,该函数将返回选择的任何列,但是我无法在plsql oracle中创建它,所以你们可以帮助我创建它,非常感谢。

马尔辛·罗布洛夫斯基(Marcin Wroblewski)

这并不是您想要的,但是创建函数返回记录可能会更好

function get_emp(p_employee_id in employee.id%type) return employee%rowtype is
   l_emp employee%rowtype ;
begin
   select e.* into l_emp
     from employee e
    where e.id = p_employee_id;

   return l_emp;
end;

然后,您可以通过以下方式获取特定字段:

get_emp(123).name
get_emp(123).age

这是一个工作示例:

SQL> create table employee (id number primary key, name varchar2(30), age number);

Table created.

SQL> insert into employee values (1, 'Smith', 28);

1 row created.

SQL> insert into employee values (2, 'Jones', 30);

1 row created.

SQL> insert into employee values (3, 'Brown', 34);

1 row created.

SQL> create function get_emp(p_employee_id in employee.id%type) return employee%rowty
  2     l_emp employee%rowtype ;
  3  begin
  4     select e.* into l_emp
  5       from employee e
  6      where e.id = p_employee_id;
  7
  8     return l_emp;
  9  end;
 10  /

Function created.

SQL> begin
  2    dbms_output.put_line('Name = ' || get_emp(1).name);
  3    dbms_output.put_line('Age = ' || get_emp(1).age);
  4  end;
  5  /
Name = Smith
Age = 28

当然,最后一个PL / SQL块不是很有效,因为它两次调用了函数(并因此调用了查询)。更有效的版本是:

declare
  l_emp employee%rowtype;
begin
  l_emp := get_emp(1);
  dbms_output.put_line('Name = ' || l_emp.name);
  dbms_output.put_line('Age = ' || l_emp.age);
end;
/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从返回多列的函数中选择

来自分类Dev

让函数返回类型的任意实例

来自分类Dev

plsql 函数 - 根据传递的数字返回

来自分类Dev

不从选择返回列?

来自分类Dev

在Slick中选择许多任意列

来自分类常见问题

返回带有任意数量输入参数的函数

来自分类Dev

如何在bash中模拟从函数返回的任意值?

来自分类Dev

我可以使C函数返回任意类型吗?

来自分类Dev

Python递归函数不会返回随机选择

来自分类Dev

根据函数返回值选择列表

来自分类Dev

选择案例函数要求返回值

来自分类Dev

XPath:从函数返回的节点集中选择

来自分类Dev

Python 3:选择从函数返回的类的名称

来自分类Dev

如何选择函数返回的自定义数据类型的成员作为单独的列以及表的列?

来自分类Dev

选择存储的proc plsql

来自分类Dev

使用map()从Scala数组中选择多个任意列

来自分类Dev

函数如何返回多列?

来自分类Dev

在选择列之间循环应用函数的列

来自分类Dev

plsql中的增量函数

来自分类Dev

返回SQL选择列中的多值

来自分类Dev

如何根据返回的行选择多列?

来自分类Dev

返回选择匹配所在的MySQL列的名称

来自分类Dev

sqlite列值返回以进行选择-JavaScript

来自分类Dev

R DataTable函数用于选择列

来自分类Dev

Linq与实体框架使用函数选择列

来自分类Dev

Cassandra querybuilder选择多列聚合函数

来自分类Dev

选择函数索引或新列索引

来自分类Dev

plsql-Oracle选择集合

来自分类Dev

Oracle PLSQL-如果找到列组合,如何查询返回结果