oracle - 在包中定义自定义类型
问题描述
我有以下类型:
create or replace TYPE t3_data AS OBJECT (
vk NVARCHAR2(12),
pl VARCHAR2(2000),
dt NUMBER,
ay CHAR(10),
ao CHAR(10),
an VARCHAR2(4000),
r NUMBER,
c CHAR(10)
);
我在如下函数中使用它:
FUNCTION pick_values RETURN t3_table PIPELINED
t3_data 和 t3_table 的关系如下:
create or replace TYPE t3_table IS
TABLE OF t3_data;
有没有办法在我已经定义了函数的包中定义 t3_data 和 t3_table ?
解决方案
对象类型是 SQL 类型,因此它们不能在 PL/SQL 中创建。但是,您可以在包中定义记录类型而不是对象类型,并且您应该能够使用该记录类型来定义流水线表函数
create or replace package test_pkg
as
type t3_data_rec is record (
vk NVARCHAR2(12),
pl VARCHAR2(2000),
dt NUMBER,
ay CHAR(10),
ao CHAR(10),
an VARCHAR2(4000),
r NUMBER,
c CHAR(10)
);
type t3_table is table of t3_data_rec;
function pick_values
return t3_table pipelined;
end;
/
create or replace package body test_pkg
as
function pick_values
return t3_table pipelined
is
l_rec t3_data_rec;
begin
l_rec.vk := N'foo';
pipe row( l_rec );
end;
end;
/
select *
from table( test_pkg.pick_values );
推荐阅读
- angular - 如何使用 Renderer2 在 Angular 中使用 DOM click()
- javascript - 全局变量即使在函数中重新初始化后也返回 null
- hazelcast - jCache 提供程序功能
- git - Github API - 获取提交日期
- for-loop - 如何修改切片中结构的字段?
- vue.js - 将“检测外部点击”自定义指令从 Vue 2 迁移到 Vue 3
- java - Maven:无法转移 - 未授权
- excel - 函数与子(ByRef)
- java - 我使用 sendkeys 上传了一个 pdf 文件,删除了该文件并再次上传了一个不同的 pdf。这样做时,需要上传第一个 pdf 而不是第二个 pdf
- javascript - 在引导程序日期选择器(BS v3)中设置自定义主题颜色