我正在編寫一個存儲過程以從表add_files_tables中檢索匹配的文件位置。我用ref cursor的case語句來獲取結果集,然後打印文件名。我創建了這些軟件包,但它總是給我空集。哪裏有問題 。case statement not ref with ref cursor
create or replace package search_cur as
type my_cursor is ref cursor;
function search_File(FILE_NAME varchar2,opt number) return my_cursor;
end search_cur;
/
create or replace package body search_cur as
function search_File(FILE_NAME varchar2,opt number) return my_cursor is
ret my_cursor;
begin
Case opt
when 1 THEN
OPEN ret FOR
select file_location
from add_files_details
where upper(username) like '%'||file_Name||'%'
;
return ret;
when 2 THEN
OPEN ret FOR
select file_location
from add_files_details
where upper(EXTENSION) like '%'||file_name||'%'
;
return ret;
WHEN 3 THEN
OPEN ret FOR
select file_location
from add_files_details
where upper(UPLOAD_DATE) like '%'||file_name||'%'
;
return ret;
WHEN 4 THEN
OPEN ret FOR
select file_location
from add_files_details
where upper(FOLDER_ID) like '%'||file_name||'%';
return ret;
when 5 then
open ret for
select file_location
from add_files_details
where upper(file_name) like '%'||file_name||'%';
return ret;
end case;
end search_file;
end search_cur;
/
請發佈一個[簡短,自包含的示例](http://sscce.org/),它可以重現您的問題。你已經發布了太多的*代碼和太多的*小的*:太多*太多了,因爲我無法想象你的問題要求所有這些情況都是可重複的,而且*小*,因爲你沒有'張貼什麼將允許它被複制。 – ruakh
由於您將所有字段轉換爲大寫字母作爲比較的一部分,所以您可能需要更改比較以在使用前將輸入參數FILE_NAME轉換爲大寫。使用'...'這樣的東西(file_name就像是'%'|| UPPER(file_name)||'%''。)分享和欣賞 –
發佈時,我很着急,這就是爲什麼我只發佈代碼。我試圖通過它來實現高級搜索功能,當任何用戶選擇哪種類型時,他希望通過擴展名或用戶名進行搜索,這些搜索將作爲數字進行檢索,然後在搜索框中輸入他的名字。 ,我們考慮創建一個單獨的過程,併爲不同的選項提供不同的輸出。 @Bob,實際上我是在java前端中轉換search_value。 – DeSmOnd