gpt4 book ai didi

java - 当多个过程签名时,使用 Java 获取 Oracle 过程元数据

转载 作者:行者123 更新时间:2023-12-02 09:35:45 26 4
gpt4 key购买 nike

我们有一个带有多个过程签名的 Oracle 数据库。它们每个都有 6 个参数,但在签名的每个变体中,最后一个参数是不同的类型。

例如,在一种变体中,最后一个参数是 clob,在另一种变体中,它是 varchar。

在执行过程之前,我们查找过程的列

rs = conn.getMetaData().getProcedureColumns(packageName, schema, procedureName, "%");

此调用始终仅返回过程的一种表示形式的列。这是有问题的,因为我们在执行之前使用该响应中的列最终将参数加载到可调用语句中。我们这样做是为了获得参数范围(输入、返回等)。如果元数据获取提取了最后一个参数是字符串的变体,但我们实际上尝试使用 clob 执行该变体,那么它会出错,因为它试图执行过程的错误变体。

最佳答案

如果您不反对使用 Oracle 数据字典,您可以像这样获取所有过程/列元数据:

select * from all_arguments
where user = '<your schema>'
and package_name = '<you rpackage>'
and object_name = '<your procedure>'
order by subprogram_id, position

关于java - 当多个过程签名时,使用 Java 获取 Oracle 过程元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com