如何检查 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_type
和v_temp
。 v_param_type
必须是数字,v_temp
是 varchar2,它们都是 out
参数。
不幸的是,如果事先不知道其中包含的参数名称,就无法从ParamList
中检索所有参数。
【讨论】:
我定义了 v_param_type 和 v_temp,只是没有打印出来。这里的问题很奇怪,除了定义v_param_type和v_temp,还有其他问题吗?以上是关于如何检查 Oracle PL/SQL 中的参数列表值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Oracle中仅将列用作1行到1行返回pl / sql函数中的参数