use*_*411 6 sql oracle plsql sqlplus
问题类似于在SQL*PLUS中使用LIKE,其中select语句包含LIKE子句,如下所示:
select * from sometable where somecolumn LIKE 'something%';
Run Code Online (Sandbox Code Playgroud)
如何在游标中使用相同的?我尝试使用以下内容:
cursor c is select * from sometable where somecolumn like 'something%';
Run Code Online (Sandbox Code Playgroud)
与上述相同
编辑:我需要获取一些参数,这意味着,select语句在存储过程中执行.
编辑2:
create procedure proc1 (search VARCHAR) is
cursor c is select student_name from students where student_name like 'search%';
Run Code Online (Sandbox Code Playgroud)
- 我知道使用'search%'检索包含'密钥搜索'的学生姓名,但是有没有其他方法可以使用这样的变量.
do something;
end;
Run Code Online (Sandbox Code Playgroud)
简而言之,我需要选择包含作为参数传递的值的学生姓名; 这可能不是全名,可能足以在类似的条款中使用.
Gau*_*oni 25
根据我对您的问题的理解,您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;
Run Code Online (Sandbox Code Playgroud)