何时在函数中使用光标

时间:2013-05-31 19:16:22

标签: sql oracle function cursor

我正在编写一个函数,它接受两个参数(一个ID和一个公司名称),并根据这两个变量返回一个值作为数字。 select语句是一个简单的左连接,有两个表AND company_name = 'company_name_var'WHERE ID = id_var

我的功能可以从使用游标中受益吗?如果是的话,我将如何利用它以及为什么/有什么好处?

SELECT STATEMENT:

SELECT Max(some_other_value) 
FROM   table1 
       inner join table2 
                  ON table1.id  = table2.id
                     AND company_name  = 'company_name_var' 
WHERE ID = id_var; --id and ID here represent two different columns :)

1 个答案:

答案 0 :(得分:1)

没有。游标将处理多行。你只想得到一排。因为你只想要你应该插入的最大值:

create or replace function myfunction(i_company_name varchar2, i_id pls_integer)
return number
as
   l_maxvalue number;
begin
  SELECT Max(some_other_value) 
  into   l_maxvalue
  FROM   table1 
         inner join table2 
                    ON table1.id  = table2.id
                       AND company_name  = i_company_name
  WHERE ID = i_id;
  return l_maxvalue;
end myfunction;