2016-08-26 71 views
0

假設我有下面的代碼片段在PL/SQL:定義變量是記錄屬性的類型PL/SQL

type my_record is record(
    CUST_ID number(7); 
    CUST_NAME varchar2(200); 
); 

現在我要聲明一個變量,採用相同類型cust_name

my_title my_record.cust_name%type; 

這就是我試過的錯誤'PLS-00206:%TYPE必須應用於變量,列,字段或屬性......我相信我正在做Oracle文檔顯示的內容...... http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/type_attribute.htm

我不希望硬編碼變量類型,在這種情況下,CUST_NAME類型有變化。

回答

0

創建記錄類型的變量。並將%type應用於此變量;

DECLARE 
type my_record is record(
    CUST_ID number(7), 
    CUST_NAME varchar2(200) 
); 
myRec my_record; 
my_title myRec.cust_name%type; 

BEGIN 
    NULL; 
END; 
1

看到您發佈的文章的第一行。 它讀取爲「%TYPE屬性允許您將常量,變量,字段或參數聲明爲與之前聲明的變量,字段,記錄,嵌套表或數據庫列相同的數據類型。」

在這裏,你試過一個記錄類型,而不是記錄應用%TYPE。

Declare 

Type my_record is record(
    CUST_ID number(7); 
    CUST_NAME varchar2(200); 
); 

my_var my_record ; 
my_new_var my_var.CUST_NAME%type; 
begin 
null; 
end; 
1

你需要反過來做。如果您首先聲明變量(如果需要,則使用%type),記錄定義可將其引用爲somevariable%type。或者首先聲明一個子類型並在兩個地方引用它。