Oracle 包定义内的用户定义类型

2024-03-17

Oracle 包定义中是否可以有用户定义类型?当我尝试跟随时

CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID AS OBJECT
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
CREATE OR REPLACE PACKAGE BODY AF_CONTRACT AS  -- body

--   PROCEDURE my_procedure (emp_id NUMBER) IS
--   BEGIN
--      
--   END my_procedure;

END AF_CONTRACT;

我总是收到错误

Error: PLS-00540: object not supported in this context.

在类型定义中。


不,这是不允许的:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID AS OBJECT
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12

Warning: Package created with compilation errors.

SQL> SQL> sho err
Errors for PACKAGE AF_CONTRACT:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/4      PLS-00540: object not supported in this context.
SQL>

如果您想创建一个仅在 PL/SQL 过程之间传递数据的类型,请使用 PL/SQL RECORD 语法:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID IS RECORD
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12
Package created.

SQL>

但是,如果您想要一种可以在 SQL 语句中使用的类型 - 即作为TABLE()函数 - 您需要将其创建为 SQL 类型。 SQL和PL/SQL使用两种不同的引擎,并且只有SQL类型对SQL引擎可见。


我关于 SQL 类型必要性的建议对于更高版本的 Oracle 来说不再适用。当然,在 11gR2 和 12c 中,SQL 引擎将支持 PL/SQL 包中的 SQL,该包在 PL/SQL 包中使用 PL/SQL 表。TABLE()条款。类型必须在包规范中声明,因此对 SQL 引擎是公开且可见的。 Oracle 在幕后为每个声明生成 SQL 类型。您可以发现这些类型,因为它们的名字开头SYS_PLSQL_后跟数字标识符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 包定义内的用户定义类型 的相关文章

随机推荐

  • 如何将多个 UIBarButtonItem 添加到 UINavigationBar?

    我想添加很多UIBarButtonItem s to a UINavigationbar 不仅仅是左右按钮 logoButton UIBarButtonItem alloc initWithTitle A Button style UIBa
  • WP7 - 防止 RestSharp 缓存

    我在 Windows Phone 7 1 项目中使用 RestSharp 我的问题是 RestSharp 总是缓存响应数据 Example 我第一次发送请求时 它正确返回数据 经过一些删除操作后 我再次发送该请求 但响应似乎与第一次相同 没
  • 从结账后挂钩中检索分支名称

    当在 Git 中从一个分支切换到另一个分支时 是否有任何方法可以从 post checkout 挂钩中检索两个分支的名称 所以假设我要运行以下两个命令 git branch branch a branch b master git chec
  • 以递归函数的形式返回

    我想了解如何在 C 中使用递归 但我不明白如何return在其中工作 请考虑以下代码 int recur int i printf recur i d n i if i lt 3 recur i 1 return 10 else if i
  • SHA512 哈希值在 android、php 和 javascript 上有所不同

    我正在使用 SHA512 哈希在我的应用程序与其后端之间传输一些加密数据 然而 我遇到了一个奇怪的情况 不知道是什么原因造成的 因此 我测试了以下设置 安卓 2x SHA512 Android 1x SHA512 gt CryptoJS 1
  • Snackbar 和其他动画在某些 Android 设备上停止工作

    我有一个非常奇怪的问题 我无法弄清楚 直到最近我才成为一个问题 但我似乎无法恢复以防止它 另一个奇怪的事情是它可以在某些设备上运行 而在其他设备上则不能 问题是动画 其中一个特别是小吃店 小吃栏应该上下动画 但事实并非如此 它只是显示然后隐
  • 如何在haskell中将函数类型序列化为json?

    data Task Task id String description String dependsOn String dependentTasks String deriving Eq Show Generic ToJSON FromJ
  • Django Rest框架具有多个模型的嵌套字段

    这是 django 和 django Rest 框架 我有 2 个模型 用户和电话 第一个问题 我希望能够与电话一起更新用户数据 电子邮件 1 个 API 更新响应中的数据 电话号码 电话号码可以 为 0 个或多个 嗯 实际上就像parti
  • 如何更新媒体商店中的流派?

    我正在尝试更新音频文件的流派标签 CODE final Uri genreUri MediaStore Audio Genres EXTERNAL CONTENT URI String currentGenreName MediaStore
  • R:整数与数字

    这个问题也许之前已经得到了回答 但我没有看到答案 我有一个由数字和缺失值组成的数据集 一行是一个百分比 下面是一小组假数据 其中 AA BB 和 CC 是列名称 该数据集中的第三行是百分比 AA BB CC 234 432 78 1980
  • jssor滑块宽度问题

    超级困惑如何调整这个滑块的宽度 我尝试编辑jquery 你会看到它被注释掉了 jQuery document ready function var nestedSliders each sliderh1 container sliderh2
  • 使用空手道框架生成单个 cucumber.json

    我在空手道测试中使用并行执行 我试图在里面生成一个 cucumber json 文件target文件夹 在当前设置下 surefire reports 文件夹中有不同的 json 和 xml 文件 有没有办法可以生成包含功能结果的单个 js
  • 如何在SQL中选择没有时间的日期

    当我在 SQL 中选择日期时 它返回为2011 02 25 21 17 33 933 但我只需要日期部分 即2011 02 25 我怎样才能做到这一点 对于 SQL Server 2008 Convert date getdate 请参阅h
  • 在某些情况下禁用自动桥接

    From 将 Swift 与 Cocoa 和 Objective C 结合使用 使用 Cocoa 框架 https developer apple com library prerelease content documentation S
  • 恢复 UploadTask 会导致 E/StorageException:BufferedInputStream 已关闭

    我无法从暂停状态恢复 UploadTask 如果我让它完成而不尝试暂停上传 我就能够成功上传视频 根据Firebase 存储 Android 文档 https firebase google com docs storage android
  • 是否可以从打开的文件描述符重新创建文件?

    现在 这个问题可能看起来很奇怪 而且可能确实如此 但为了提供一些背景信息 我一直在阅读this http linuxgazette net 105 pitcher html要了解 i 节点 作者给出了一个有趣的例子 FILE fp fp f
  • 使用 angularjs 引导导航栏

    我正在尝试让引导导航栏与 angularjs 一起使用 我希望将导航栏放在 index html 中 并将导航栏中每个选项卡的其余内容放在各自的部分中 我无法显示部分内容 http plnkr co edit sKJU4nrNYV56uJQ
  • Ghostscript 不会将 PDF 转换为 PDF/A。注释问题

    我正在尝试将 PDF 转换为 PDF A 每次通过时我都会收到错误 GPL Ghostscript 9 19 Annotation set to non printing not permitted in PDF A reverting t
  • 在 Django 中为自定义用户扩展用户表单

    我按照此 SO 帖子中的描述扩展了我的用户模型 使用 Django 中的自定义字段扩展用户模型 https stackoverflow com questions 44109 extending the user model with cu
  • Oracle 包定义内的用户定义类型

    Oracle 包定义中是否可以有用户定义类型 当我尝试跟随时 CREATE OR REPLACE PACKAGE AF CONTRACT AS spec PROCEDURE my rpcedure emp id NUMBER TYPE DT