2012-08-05 187 views
0

我正在使用SQL運行此代碼。它返回identifier not declared patient_t。我已經創建patient_t型/ object.and還我試圖patient_t%ROWTYPE未聲明標識符

CREATE OR REPLACE PACKAGE PATIENT_DATA_SERVICES AS 

function get_patient_id 
(p_first_name in varchar2 
, p_last_name in varchar2 
) return number 
; 

function get_patient_record 
(p_patient_id in number 
) return patient_t 
; 

END PATIENT_DATA_SERVICES; 
+1

這是Oracle嗎?什麼是創建「patient_t」類型的代碼?看起來好像你還沒有創建這個對象/類型。 – Ben 2012-08-05 19:41:30

+0

您正在使用哪種RDBMS系統? – Lion 2012-08-05 19:41:43

+0

您需要創建patient_t類型。檢查腳本中是否在此之後創建它,或者它是否未創建。 – j0N45 2012-08-05 19:44:59

回答

0

需要聲明的類型patient_t在PL/SQL包:

CREATE OR REPLACE PACKAGE PATIENT_DATA_SERVICES AS 

TYPE patient_t IS RECORD (id NUMBER(15), ...); 

function get_patient_id 
(p_first_name in varchar2 
, p_last_name in varchar2 
) return number 
; 

function get_patient_record 
(p_patient_id in number 
) return patient_t 
; 

END PATIENT_DATA_SERVICES; 

應該patient_t是您的數據庫中的表,功能可以這樣聲明:

function get_patient_record (p_patient_id in number) return patient_t%ROWTYPE; 
+0

我已經創建了patient_t類型/對象,我嘗試運行上面的代碼,但在第11行遇到同樣的錯誤ERROR:PLS-00905:object SOADEMO.PATIENT_T is invalid – bhopal 2012-08-05 20:58:44

1

刪除%rowtype。 %rowtype用於TABLE或CURSOR。 patient_t是您創建的TYPE。

function get_patient_record 
(p_patient_id in number 
) return patient_t 
;