2016-11-30 42 views
-4

我有以下情形:返回用户自定义表在PL/SQL查询加硬编码的可变

我需要送入任何一个过程或函数的参数如下:

Link_1_ID, Link_2_ID, Address1, Address2, City, State, Zip, Address_Type 

这些将用于查询围绕某些逻辑的表(我们称之为表ADDRESS_INFO),然后用'0001'对变量LOC_CDE进行硬编码。

然后我需要这一切都在用户定义的表类型的形式返回(尽管它应该只在一个时间拉一条记录)。该表将输出如下:

Link_1_ID, Link_2_ID, Address1, Address2, City, State, Zip, LOC_CDE (no Address_Type) 

我很PL/SQL新手,并且在返回任何东西时都没有运气。我还希望将所有代码保存在一个定义的PACKAGE中(这也会造成麻烦)。

任何意见或帮助,将不胜感激。

+0

这将有助于大大显示一些代码!向我们展示你迄今为止做了什么,也许我们可以提供帮助。恐怕你不清楚你在问什么。 –

+0

我的歉意。我的代码是一个真正的混乱,因为我正在继续尝试和解决这个问题。我会尝试添加一些在一段时间。我想要达到什么样的基本目标? –

+1

尝试给出一个完整的,可重复的例子,以便想要帮助的人可以复制/粘贴并尝试它以帮助。在数据的示例之前和之后显示,以便清楚您正在处理的内容以及您之后的内容。我知道这并不总是那么简单,但您提供的信息越多,您就越有可能获得有意义的帮助。 –

回答

0

你想要你自己的UDT,说你的函数只返回一个值;所以我相信你可能需要先定义你的类型,例如:

create or replace type yourType as object (fieldA number, fieldB varchar2(20), fieldC varchar2(20)); 

然后你就可以用你需要的所有参数定义函数,返回您的UDT的一个实例:

create or replace function yourFunction (parA number, parB varchar2) return yourType is 
    returnVal yourType; 
begin 
    select yourType(parA, parB || ' something', 'FIXED_VALUE') 
    into returnVal 
    from dual; 
    return returnVal; 
end; 

这只是处理你的UDT变量的一种方法;例如你UDT明确,你可以填写以下字段:

create or replace function yourFunction (parA number, parB varchar2) return yourType is 
    returnVal yourType; 
begin 
    returnVal := new yourType(null, null, null); /* you need an initialization here */ 
    select parA, parB || ' something', 'FIXED_VALUE' 
    into returnVal.fieldA, returnVal.fieldB, returnVal.fieldC 
    from dual; 
    return returnVal; 
end; 

你可以使用一些其他的变量来读取到,然后使用这些变量来填补你的返回值,或定义构造函数来处理您的UDT的创建具有一些自定义逻辑的实例,等等......这只是处理UDT并将其用作函数的返回值的简单方法的一个非常基本的示例。

相关问题