Java-PLSQL-从java调用记录表

2023-12-14

PLSQL 包过程声明

TYPE custom_type IS TABLE OF single_rec_type;

 TYPE single_rec_type IS RECORD(
 //id, name etc
 )

Problem:

但custom_type没有直接的Java类型表示[比如OracleTypes.CLOB or OracleTypes.CURSOR] 因为 custom_type 是 PLSQL 类型而不是 SQL 类型。

当我用谷歌搜索时,我发现了这两个选项: 来代表它,

(1) 从过程(或包装器 PLSQL 函数)创建一个 SQL 类型,我们可以从 java 绑定它。 参考:java - 在oracle存储过程中传递数组

(2) 将输出参数注册为我们的类型,并使用 SQLData 对象来表示一条记录。 参考:如何在oracle中获取表作为输出参数

callableStatement.registerOutParameter(8, OracleTypes.ARRAY, "custom_type");

这样做时,我收到错误:

java.sql.SQLException: invalid name pattern: MYDB_OWNER.custom_type
    at oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:554)
    at oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:471)

一项建议是在架构内声明 custom_type TYPE,而不是在包内声明。 或者通过创建公共同义词并给予资助。

Question- 关于第二种方法,在架构级别声明任何自定义类型是否正确?


是的,这是唯一有效的方法。我按照第二种方法中提到的链接进行操作如何在oracle中获取表作为输出参数

它起作用了。包级别的更改包括 (1) 声明custom_type and single_rec_type在模式级别 [作为全局,不在包内] 和 (2) 替换IS RECORD with AS OBJECT.

除了链接中提到的内容之外,Java 代码也发生了变化,包括给出类的完整名称map.put("SINGLE_REC_TYPE", Class.forName("com.example.SRecord"));

另一件值得注意的事情是,在该示例中,它提到stream.readString();。如果你读过API,它会说“读取流中的下一个属性并将其作为 Java 编程语言中的字符串返回。”。因此,如果对象内部有三个属性,则像这样使用该方法三次

id = stream.readString();
name = stream.readString();
designation = stream.readString();

那篇文章中很好地提到了另一点;关于对象内部属性的数据类型。如果存在类型不匹配,则会出现内部表示错误。

例如:正确的方法:

SRecord.java

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

Java-PLSQL-从java调用记录表 的相关文章

随机推荐

  • AllocConsole() 不显示 cout

    我有一个 DLL 我在其中使用 AllocConsole 和 cout 显示数据以进行调试 它曾经工作正常 但自从我将编译器 Visual Studio 2012 更新到最新版本后 dll 只显示控制台 但不显示打印 输出 我不知道为什么会
  • 拒绝二进制文件,状态等待审核(找不到拒绝二进制文件按钮)

    我想拒绝正在等待审核的二进制文件 当我转到该路径时开发者指南指定我找不到拒绝二进制文件的按钮 在 iTunes 连接中 从 我的应用程序 select 单击您的应用程序 然后 确保您在 版本 选项卡 并选择正确的版本 Click 从审核中删
  • 在基于打字稿的设置上运行续集播种机时出错

    我想在我的express api上使用sequelize播种机和迁移 目前所有模型都是使用打字稿编写的续集打字稿 我尝试使用打字稿添加我的第一个种子文件 但运行时出现错误 20221028050116 feeds ts播种文件 use st
  • xsd:choice 的 minOccurs 和 maxOccurs 的含义?

    有什么区别
  • Python 3 中具有列表理解的多行用户输入

    这里完全是 Python 新手 我正在使用 Python 3 解决 CodeAbbey 的问题 我希望得到帮助来缩短用户输入的代码 假设我想从用户那里获取以下输入 3 2 3 4 5 6 7 第一行是案例数 接下来的每一行都是案例本身 有
  • 如何在条形图中显示每个条形的条形值?

    需要查看条形图中的条代表的精确值 而不是 Y 轴上的近似值 这怎么可能做到呢 谢谢阅读 在 iReport 3 7 6 中 您只需选中 BarPlot 属性下的 显示标签 框即可 在之前的版本 3 1 4 中 我必须创建一个 ChartCu
  • Python - 英语翻译器

    用 Python 编写程序将英语单词和 或短语翻译成其他语言的最佳方法是什么 AJAX Language API 这是一个非常困难的问题 语言非常非常very复杂的 想想你必须做的所有事情 解析这个短语 弄清楚这些词的意思 然后翻译它们 这
  • 如何禁用 NSURLConnection 中的 keepalive?

    有什么办法可以强制NSURL连接不重复使用当前的持久连接但要创建一个新的 我正在努力保护自己免受这个已知的影响iOS8 保活错误 如果 iOS 8 收到带有 Keep Alive 标头的 HTTP 响应 它会保留此标头 连接稍后重用 应该如
  • 查找包含带有标签的子任务的家长问题

    我有一个 JIRA 项目 我的一些任务包含标签为 needDesign 的子任务 是否可以找到包含具有该标签的子任务的所有父任务 我使用ondemand jira版本 Jira JQL 并非不提供开箱即用的功能 但是有许多扩展 JQL 的附
  • javafx平台runlater返回结果

    我正在开发 JavaFX 应用程序 在我的场景中是显示在 JavaFX 中创建的密码提示 该提示需要带有两个选项的密码OK and Cancel 我已返回用户输入的密码 我的显示密码对话框的类别是 public static String
  • 如何在不使用 ++ 或 + 或其他算术运算符的情况下将两个数字相加

    如何在不使用 或 或任何其他算术运算符的情况下将两个数字相加 这是很久以前在一次校园面试中被问到的问题 不管怎样 今天有人问了一个关于一些位操作的问题 并在回答中给出了一个漂亮的指南斯坦福有点玩弄 这是我前段时间为了好玩而写的 它使用一个二
  • jquery®ex 的电话号码格式

    我需要验证任何输入 val 并将其转换为电话号码格式 即 input 呃 f375g25123435s67我需要转换成 375 25 1234567 keyup function newval this val replace D g ne
  • 为我的网站编写
    标记的正确方法,以提供我们公司的联系方式

    我正在使用 asp net mvc 5 构建一个网站 我想提供我们公司的联系方式 如电话 电子邮件 邮政地址等 所以我使用了
  • 如何将 NSString 初始化为带双引号的文本[重复]

    这个问题在这里已经有答案了 我想将 NSString 初始化为带双引号的 头发 可能吗 有什么帮助吗 但 NSString str hai 我想将其转换为 hai 而不直接初始化 有什么帮助吗 如果您想转换现有字符串 请使用以下命令 NSS
  • 将 R 中二项式 glm 的 cbind() 格式转换为具有单独行的数据帧

    按照此处的示例 R中二项式glm的输入格式 我有一个数据集y cbind success failure 每行代表一种治疗 我的问题是 如何将每个观察值转换为 二进制 格式 例如 每个观察值 y 0 或 1 工作示例在这里 df1 lt d
  • 使用 Retrofit 和 Gson 解析 JSON 数组响应

    这是来自 Web 服务的 JSONArray 响应 sponsors leg id NYL000067 type primary name AUBRY leg id NYL000171 type cosponsor name PERRY l
  • 如何修复 java.lang.NoSuchMethodError: sun.security.ssl.SSLSessionImpl

    应用程序通过读取jsf形式的参数来发送信件 我不明白为什么以及如何修复它 因为当您从开发环境运行时 一切正常 当我将应用程序放在 VPS 服务器上时 我收到下一个错误堆栈 尽管应用程序根据需要在本地主机上运行 StandardWrapper
  • 防止SQL注入的好方法有哪些? [复制]

    这个问题在这里已经有答案了 我必须为我的在职培训公司编写一个应用程序管理系统 前端将用 C 完成 后端将用 SQL 完成 我以前从未做过这种规模的项目 在学校里我们只学过有关 SQL 的基础课程 不知何故 我们的老师完全没有讨论SQL注入
  • 难道真的不能写一个在windows中隐藏密码的php cli密码提示吗?

    我花了几个小时试图找到一种在 php 中编写跨平台密码提示的方法 该提示隐藏用户输入的密码 虽然这可以通过使用 stty echo 在 Unix 环境中轻松完成 但我尝试了各种 passthru 和 system 调用方法来使 Window
  • Java-PLSQL-从java调用记录表

    PLSQL 包过程声明 TYPE custom type IS TABLE OF single rec type TYPE single rec type IS RECORD id name etc Problem 但custom type