我有一组具有不同数据类型的表,我需要整合一种检索数据的方法.我认为使用函数是个好主意,但我不知道如何定义一个具有不同返回类型的函数.
例如,如何定义此函数以便能够对tabletype使用不同的定义.
CREATE OR REPLACE FUNCTION retrieve_info(field_id in integer)
RETURN pintegertypetable -- <-- how to change this to return a more generic record built dynamically in the code below?
AS
r pintegertypetable := pintegertypetable ();
BEGIN
r.extend;
r(i) := pintegertypetable (someinteger);
return r;
END;
Run Code Online (Sandbox Code Playgroud)
那可能吗?.有没有更好的方法来处理这个问题:最初存储在许多遗留表中的不同列,并且假设每列都有不同的数据类型,我们可以通过哪种方式检索保存原始数据类型的最新信息,而无需硬编码视图将所有内容存储在varchar2中并在客户端代码中再次投射?
您可以通过使用弱类型的Ref Cursor作为返回类型来实现此目的.这在使用JDBC的客户端界面中特别容易实现,因为返回的游标类型可以像任何查询结果一样逐步执行,并且可以从ResultSet.getMetaData()中查询元数据.这是一个例子:
CREATE OR REPLACE PROCEDURE retrieve_info(field_id in integer, p_cursor in out sys_refcursor)
AS
BEGIN
open p_cursor for 'select * from emp';
END;
Run Code Online (Sandbox Code Playgroud)
对于任意数量的列,引号中的查询可以是返回任何类型的任何内容.
归档时间: |
|
查看次数: |
11132 次 |
最近记录: |