PLSQL:在过程的参数中修改

PLSQL:在过程的参数中修改,plsql,Plsql,我有这样的程序: Procedure(var1 IN VARCHAR2, var2 IN VARCHAR2 ... ) ---lines of code--- ---在这个过程中,我想做以下工作 var1 := filter(var1); -- filter & assign to the same variable .... .... --do something with var1 但问题是,我无法将IN参数作为常量修改为过程。 我能想到的唯一选项是创建/声明一个新的局部变量,并

我有这样的程序:

Procedure(var1 IN VARCHAR2, var2 IN VARCHAR2 ... )
---lines of code---
---在这个过程中,我想做以下工作

var1 := filter(var1); -- filter & assign to the same variable
....
....
--do something with var1
但问题是,我无法将IN参数作为常量修改为过程。 我能想到的唯一选项是创建/声明一个新的局部变量,并将其赋值为modified IN参数,然后在后续代码中使用它。 但这导致了代码的笨拙,因为有将近30个IN参数,所以我需要为每个参数创建30个新变量

需要您的帮助来更改plsql过程中的IN参数或上述问题的任何其他解决方法

问候
Vj

问题是您试图将var1作为OUT参数传递到筛选函数中,这是不允许的。您唯一的选择是:

  • 将其设置为输入输出参数
  • 将其赋给局部变量

如果要修改var1,必须将程序规范更改为:

Procedure(var1 IN OUT VARCHAR2 ...
但是,您说过有将近30个IN参数。如果数据是相关的,为什么不创建自定义记录类型

-- use CREATE OR REPLACE if at the schema level
CREATE TYPE my_params_type IS RECORD(var1 type, var2 type ...);
然后你的程序

Procedure(params IN my_params_type) IS
filtered_params my_params_type := params; 
BEGIN
  filterd_params.var1 := filter(params.var1);
  ... 
诸如此类