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的引用吗?