有游标如下:
cursor mycur(v_ename varchar2) is
select * from emp where ename in v_ename;传一个字符串
l_ename := 'test,test';
或
l_ename :='''test'',''test''';这两种我都试了,均报错。不知道应传入什么形式的字符变量。
(l_ename := 'test';测试通过)
cursor mycur(v_ename varchar2) is
select * from emp where ename in v_ename;传一个字符串
l_ename := 'test,test';
或
l_ename :='''test'',''test''';这两种我都试了,均报错。不知道应传入什么形式的字符变量。
(l_ename := 'test';测试通过)
解决方案 »
- 如何写一个时间内的sql语句?
- 如何从一个字符串里面提取连续的1
- 查询视图无法使用索引
- 请高手讲一讲oracle中BLOB和CLOB的使用方法,最好给一个JSP的应用例子,万分感谢!
- 表与表的外连接
- 求助TNS-12560: TNS:protocol adapter error
- 有没有更简单删除重复记录的方法
- LONG RAW 字段与SQL的IMAGE字段有什么区别?从LONG RAW字段中怎么取出??
- 在PL/SQL中,我这样定义游标行吗?
- oracle客户端需加@orcl才能登录,不然提示12560 协议适配器错误
- 怎样写存储过程每天自动与数据库同步?
- 请问oracle中case...if怎么用在这里呀????谢了!!!
select * from emp where (ename = v_ename or ename=v_ename2);
你的方法适合固定变量数量,现在我并不知道逗号分开的字符串的个数。to sbaz(万神渡劫)
'()'我试过的,不是这个问题
传一个字符串
l_ename := 'test,test';
或
l_ename :='''test'',''test''';
然後用ename in l_ename 來判斷ename是不是在l_ename這個字符串裡面,是不是這個意思呢,
這樣是不行的,in後跟一個集合,當然集合可以是一個元素,當只有一個元素時,括號可以省略,但樓主的l_name,就是一個只含有'''test'',''test'''這個字符的集合,所以(l_ename := 'test';测试通过)這個是可以通過測試的,我的確不明白樓主為什麼要這麼做?我覺得這種方法也沒有研究的價值
cr cur;
begin
sqlstr:='select * from emp where ename in (' || v_ename || ')';
open cr for sqlstr;
loop
fetch cr into ...
exit when cr%notfound;
...end loop;
end;
你可以这样instr(v_ename,ename,1,length(v_ename))>0
我想你不完全明白我的意思解释下我的意思:
一般,我们的sql语句是
select * from emp where ename in ('test1','test2','test3');
现在,我要把这个sql语句放入游标,但是,in后面的值,我希望作为参数传入。不确定test_n这个n的值。我的目的不是研究'()' xiao_fang(frank)
你的方法我知道,这里只是想知道我的操作有什么问题。waterfirer(水清)
--这种办法不行,那是一个字符串,跟等于号没区别。
你的回答可以解释我的问题,谢了
instr(v_ename,ename,1)>0