2012-04-14 2 views
5

質問は次のようにselect文がLIKE句が含まれているのSQL * PLUS、中LIKEを使用する場合と似ているのですか?私は、次を使用してみました:PL/SQLで「LIKE%」(たとえば「変数%」)の変数を使用しますか?</p> <pre><code>select * from sometable where somecolumn LIKE 'something%'; </code></pre> <p>はどのようにして、カーソル内の同じを使用することができます。

EDIT上記と同じ

cursor c is select * from sometable where somecolumn like 'something%'; 

:私は、パラメータ、意味、select文は、ストアド・プロシージャ内で実行されるよう何かを取得する必要があります。

EDIT 2:

create procedure proc1 (search VARCHAR) is 

cursor c is select student_name from students where student_name like 'search%'; 

--I「の検索%」を使用して知っているが「キーの検索」を含む生徒の名前を取得しますが、そのような変数を使用する他の方法があります。

do something; 

end; 

要するに、パラメータとして渡される値を含む学生名を選択する必要があります。これは全体の名前ではない可能性があり、like節の中で使用するのに十分な場合があります。

+1

だから...試したことがありますか?*何が起こったのですか? –

+0

エラー**表現がありません** – user980411

+0

あなたは確かに*原因ですか? 'CURSOR x IS {select}'は有効でなければなりません。 '{select}'は任意のselect DQLを表します。 –

答えて

20

あなたの問題が私の理解しているとおり、変数searchを引用符で囲んで使用しています。変数を引用符で囲みます(例:

create or replace procedure PROC1(search VARCHAR2) 
IS 
    cursor test_cur(search IN VARCHAR2) 
    IS 
    SELECT student_name 
    FROM student 
    WHERE student_name LIKE search||'%'; --you're putting you variable within quotes 

v_temp_var student.student_name%TYPE; 

BEGIN 

OPEN test_cur(search); 
    LOOP 
    FETCH test_cur INTO v_temp_var; 
    EXIT WHEN test_cur%NOTFOUND; 

    DBMS_OUTPUT.PUT_LINE(v_temp_var); 
    END LOOP; 

CLOSE test_cur; 

END test; 
関連する問題

 関連する問題