10

この質問は、SQL * PLUSでLIKEを使用する場合と似ています。ここで、selectステートメントには次のようなLIKE句が含まれています。

select * from sometable where somecolumn LIKE 'something%';

カーソル内で同じものをどのように使用できますか?私は以下を使ってみました:

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

同上

編集:パラメータとして何かを取得する必要があります。つまり、selectステートメントはストアドプロシージャ内で実行されます。

編集2:

create procedure proc1 (search VARCHAR) is

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

--「search%」を使用すると、「キー検索」を含む学生の名前が取得されることは知っていますが、そのような変数を使用する他の方法はありますか。

do something;

end;

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

4

1 に答える 1

34

あなたの問題に対する私の理解によると、あなたは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;
于 2012-04-14T05:06:11.253 に答える