web-dev-qa-db-ja.com

PL / SQLで「LIKE%」を含む変数(「variable%」など)を使用しますか?

質問は[〜#〜] like [〜#〜]SQL * PLUSで使用するのと似ていますが、selectステートメントには[〜#〜 ] like [〜#〜]句は次のようになります。

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

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

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

上記と同じ

編集:パラメータとして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句内で使用するのに十分な場合があります。

6
user980411

あなたの問題に対する私の理解に従って、引用符内で変数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;
25
Gaurav Soni