0

我想在 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;
4

2 回答 2

1

删除 %rowtype。%rowtype 用于 TABLE 或 CURSOR。patient_t 是您创建的 TYPE。

function get_patient_record
( p_patient_id in number
) return  patient_t
;
于 2012-08-05T21:31:23.747 回答
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;
于 2012-08-05T20:29:35.907 回答