小编典典

在PL / SQL中使用带有“ IKE%”(例如“ ariable%”)的变量吗?

sql

问题类似于在 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子句中使用。


阅读 241

收藏
2021-04-22

共1个答案

小编典典

根据我对您问题的理解,您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;
2021-04-22