如何将自定义类型作为输入参数放入可调用语句中
Posted
技术标签:
【中文标题】如何将自定义类型作为输入参数放入可调用语句中【英文标题】:How to put custom type as an input parameter in a callable statement 【发布时间】:2012-06-07 17:07:04 【问题描述】:我需要对记录表使用可调用语句。我知道如何传递字符串、int 等参数。你可以写
callableStatement.setString(1, variable);
callableStatement.setInt(2, variable);
但是对于自定义类型记录列表,我该怎么做呢?我可以考虑创建一个struct
并以某种方式发送它,但我不知道该怎么做。
这是我要使用的自定义表格和过程
type transaction is record(
trans_id varchar2(20)
,issuer_name varchar2(300)
,location_name varchar2(300)
,trans_date date
,issue_date date);
type transaction_list is table of transaction;
procedure set_transaction
(
caller_id in varchar2
,trans_list in transaction_list
,return_code out varchar2
);
【问题讨论】:
【参考方案1】:您不能将记录定义为类型。您可以改用 OBJECT:
CREATE OR REPLACE TYPE MY_TEST_REC AS OBJECT (
id_ varchar2(30),
name_ varchar2(30)
);
CREATE TABLE MY_TEST OF MY_TEST_REC;
create or replace package my_p is
procedure proc(arg_ IN OUT MY_TEST_REC);
END;
create or replace package body my_p is
procedure proc(arg_ IN OUT MY_TEST_REC)
IS
BEGIN
arg_.name_ := 'BAR';
END;
END;
然后将可调用语句中的对象绑定到 Struct。
【讨论】:
【参考方案2】:您可以在 Struct 类型旁边使用 callableStatement.setObject。
可以在此页面的_demoInsertUsingCallableStmt
方法中找到一个很好的示例:StructInsertExample
【讨论】:
以上是关于如何将自定义类型作为输入参数放入可调用语句中的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件将自定义 Gradle 插件上传到远程仓库中 ① ( 在 Module 模块中自定义 Gradle 插件 | 创建自定义插件类型模块 | 手动导入相关依赖 )
如何在 Drupal 8 中自定义/样式/主题自定义内容类型的输出?