나는 Oracle에서 절차를 작성하고 있습니다. 나는 그것을 수색에 사용해야한다. 양식 검색에는 8 개의 매개 변수가 있으며 각 매개 변수에는 많은 값이 포함될 수 있습니다. 예를 들어 두 개의 영화 제목을 추가 할 수 있습니다 (전체 제목을 입력하지 않도록 선택할 수 있음). 당신은 또한 제목이 아니라 년을 tyoe 할 수 있습니다 ..Oracle 절차 및 선택적 매개 변수의 다중 값
내 매개 변수에 대해 다중 값을 가질 수 있는지 모르겠습니까?
SQL 쿼리 만 빌드하고 싶지만 가능합니까? 내 where 절이 8 개의 매개 변수를 포함하고 있기 때문에 ... 나는이 검색에서 길을 잃었다!
나는
create or replace procedure listerFilms (
unTitreFilm Film.titre%TYPE DEFAULT NULL,
uneAnneeMin Film.annee%TYPE DEFAULT NULL,
uneAnneeMax Film.annee%TYPE DEFAULT NULL,
uneVoFilm Film.langue%TYPE DEFAULT NULL,
unPaysProd Pays.pays%TYPE DEFAULT NULL,
unGenreFilm Genre.genre%TYPE DEFAULT NULL,
unNomRea Equipe_Tournage.nomComplet%TYPE DEFAULT NULL,
unNomActeur Equipe_Tournage.nomComplet%TYPE DEFAULT NULL)
is
titreFilm Film.titre%TYPE;
anneeFilm Film.annee%TYPE;
cursor lignesFilm(leTitreFilm Film.titre%TYPE, laAnneeMin Film.annee%TYPE, laAnneeMax Film.annee%TYPE, laVoFilm Film.langue%TYPE, lePaysProd Pays.pays%TYPE, leGenreFilm Genre.genre%TYPE, leNomRea Equipe_Tournage.nomComplet%TYPE, leNomActeur Equipe_Tournage.nomComplet%TYPE) is
select distinct
f.titre, f.annee
from
Film f, Pays p, Genre g, Equipe_Tournage rea, Equipe_Tournage act
where
f.titre like '%'||leTitreFilm||'%' and f.annee >= laAnneeMin and f.annee <= laAnneeMax
and f.langue like '%'||laVoFilm||'%' and p.pays like '%'||lePaysProd||'%'
and g.genre like '%'||leGenreFilm||'%' and rea.nomComplet like '%'||leNomRea||'%'
and act.nomComplet like '%'||leNomActeur||'%';
begin
open lignesFilm(unTitreFilm,uneAnneeMin, uneAnneeMax, uneVoFilm, unPaysProd, unGenreFilm, unNomRea, unNomActeur);
DBMS_OUTPUT.PUT_LINE('---------------------');
DBMS_OUTPUT.PUT_LINE('-- Liste des Films --');
DBMS_OUTPUT.PUT_LINE('---------------------');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Aucun film ne correpond au(x) critere(s) de recherche');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20001,'Exception levée par la procédure');
loop
fetch lignesFilm into titreFilm, anneeFilm;
-- fetch retoune la ligne suivante
EXIT WHEN lignesFilm%NOTFOUND;
-- quit lorsque cursor fini
DBMS_OUTPUT.PUT_LINE(titreFilm || ' (' || anneeFilm || ')');
end loop;
close lignesFilm;
end;
/
나를 도와주세요이 절차 (일하지 않음)이
지금까지 해보신 것은 무엇입니까? 다음을 검토하십시오 : http://stackoverflow.com/help/on-topic –
나는 편집 할 필요가 있지만 절차를 완료해야하지만 성공하지는 못합니다./ –