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%';

--我知道使用“搜索%”检索包含“关键搜索”的学生姓名,但有没有其他方法可以使用这样的变量。

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 回答