Plsql PL/SQL查询列并在函数调用中使用它

Plsql PL/SQL查询列并在函数调用中使用它,plsql,Plsql,我正在尝试,但肯定我错过了很多 declare my_id table.ISR_ID%type; begin select NVL(MAX(table.ISR_ID)+1,1) into isr_id from table; select my_pkg.getFunction(InputToFunction=> isr_id); -- from ? end; 如果您声明了MY_ID变量,您应该选择它,而不是从未声明过的ISR_ID 另外,您应该将函数的结果返

我正在尝试,但肯定我错过了很多

declare 
  my_id table.ISR_ID%type; 
begin
  select NVL(MAX(table.ISR_ID)+1,1) into isr_id
    from table; 

  select my_pkg.getFunction(InputToFunction=> isr_id);  -- from ?
end;

如果您声明了MY_ID变量,您应该选择它,而不是从未声明过的ISR_ID

另外,您应该将函数的结果返回到另一个变量中?。我已经声明它很有趣-请参见PL/SQL匿名块中的注释

说你错过了很多并没有多大帮助;您应该指定得到的错误。无论如何:尝试这样一个代码,说明它是否有效,如果无效,说明为什么不可能出现错误,等等

declare 
  my_id   table.ISR_ID%type; 
  fun_res number;       --> function result should be returned into this variable.
                        --  I don't know what it returns, so I set it to be a NUMBER.
                        --  Change it, if necessary.
begin  
  select NVL(MAX(table.ISR_ID) + 1, 1) 
    into my_id 
    from table; 

  fun_res := my_pkg.getFunction(my_id);  
end;
[编辑]

如果必须为表中的每个ISR_ID选择函数值,则不需要PL/SQL,而是

select isr_id, 
       my_pkg.getfunction(isr_id) fun_res
from table;
如果需要PL/SQL,则在循环中执行,例如:

begin
  for cur_r in (select isr_id from table) loop
    dbms_output.put_line(cur_r.isr_id ||', result = ' || my_pkg.getfunction(cur_r.isr_id));
  end loop;
end;
/

非常感谢。该函数返回0或1个数字对我来说很好。我的后续问题是,此行(选择NVLMAXtable.ISR_ID+1,1)是否包含所有列值,并且函数是否检查所有值?也就是说,如果我这样做-从表中选择countdistinct ISR\u ID-我将获得100万个计数。如果没有WHERE子句,它将选择该表中所有ISR\u ID的最大值。哦,好的。。实际上,我需要为表中的每个ISR_ID运行函数。您的代码编写时希望使用一个名为ISR_ID的变量,但您只创建了一个名为my_ID的变量。对名为ISR_ID的变量的引用实际上应该是对my_ID的引用吗?