2013-05-31 26 views
0

我正在寫一個函數,它接受兩個參數(一個ID和一個公司名稱)並將基於這兩個變量的值作爲數字返回。 select語句是一個簡單的左連接,帶有AND company_name = 'company_name_var'WHERE ID = id_var的兩個表。何時在函數中使用光標

我的功能可以從使用遊標中受益嗎?如果是,我將如何利用它,爲什麼/有什麼好處?

SELECT語句:

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

不,你爲什麼會這樣想? –

回答

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;