标识符未声明

时间:2012-08-05 19:38:19

标签: oracle plsql

我想在SQL中运行此代码。它返回identifier not declared patient_t。我已经创建了patient_t类型/对象。我也尝试了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;

2 个答案:

答案 0 :(得分:1)

删除%rowtype。 %rowtype表示TABLE或CURSOR。 patient_t是您创建的TYPE。

function get_patient_record
( p_patient_id in number
) return  patient_t
;

答案 1 :(得分:0)

您需要在PL / SQL包中声明类型patient_t

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;