2016-11-30 39 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並將其用作函數的返回值的簡單方法的一個非常基本的示例。

相關問題