如何检查 Oracle PL/SQL 中的参数列表值?

Posted

技术标签:

【中文标题】如何检查 Oracle PL/SQL 中的参数列表值?【英文标题】:How to check Parameter List value in Oracle PL/SQL? 【发布时间】:2013-02-06 19:18:58 【问题描述】:

我创建了一个参数列表并添加了一些参数,但是当我想检查参数及其值是否已添加时,它无法获取我刚刚添加的值。代码有什么问题:

IF NOT ID_NULL(GET_PARAMETER_LIST('RPT')) THEN
  DESTROY_PARAMETER_LIST('RPT');
END IF;
v_param_list := CREATE_PARAMETER_LIST('RPT');

ADD_PARAMETER(v_param_list,'PAR_WHERE',TEXT_PARAMETER,'WHERE ID = 1010');

BEGIN
   GET_PARAMETER_ATTR(v_param_list,'PAR_WHERE',v_param_type,v_temp);
   message('PAR_WHERE:'||v_temp);
EXCEPTION WHEN OTHERS THEN
   message('Couldn''t get the value for : PAR_WHERE');
END; 

如何检索参数列表中的所有参数和值?

【问题讨论】:

TEXT_PARAMETER 填写在哪里? @Ben:显然这些是标准的 Oracle Forms 函数。 【参考方案1】:

正如 GriffeyDog 所说,没有办法检索参数列表项。我有同样的问题并通过使用数据库解决了它。唯一的方法是使用变通方法。 我的解决方案是在参数列表中传递一个 ID。这个 ID 代表一个 pl/sql 集合。一旦检索到 ID,就很容易获得所有集合键或值。 如果您需要更多详细信息,请告诉我,因为代码已有多年历史.....

【讨论】:

你是对的,这段代码是针对Oracle表单的,我是使用参数列表来传递值的。最后换成了使用全局变量。【参考方案2】:

我看不出你在哪里定义了v_param_typev_tempv_param_type 必须是数字,v_temp 是 varchar2,它们都是 out 参数。

不幸的是,如果事先不知道其中包含的参数名称,就无法从ParamList 中检索所有参数。

【讨论】:

我定义了 v_param_type 和 v_temp,只是没有打印出来。这里的问题很奇怪,除了定义v_param_type和v_temp,还有其他问题吗?

以上是关于如何检查 Oracle PL/SQL 中的参数列表值?的主要内容,如果未能解决你的问题,请参考以下文章

过程检查设置参数(PL/SQL、ORACLE)

如何修复存储过程 Oracle PL/SQL 的错误?

如何在Oracle中仅将列用作1行到1行返回pl / sql函数中的参数

Oracle PL/SQL 中基于参数的选择查询

在 Oracle PL/SQL 中,如何检查 JSON 对象是不是包含特定键的元素

如何使用参数从 Oracle PL/SQL 执行 Java jar 文件?