oracle存储过程的时候参数是1','2','3 我怎么能把他当成where条件

我写了一个存储过程 定义了一个变Is_fxflid in varchar2
现在我往变量里传值 传的值 是这样的
(1','2','3) 这个值 前后 都没有引号
所以 我在写select语句的时候
例如 where fxflid in (Is_fxflid) 这样 肯定就查不到值了
所以我现在想 怎么整 才能让我的select语句变成
where fxflid in ('1','2','3') 这样 而不是 where fxflid in (1','2','3)
请问哪位大侠 能解决下 急

第1个回答  2012-03-09
如果对效率要求不高,可以考虑将fxflid当做字符串来处理,与输入参数匹配。
如:
where instr(''''||ls_fxflid||'''',''''||fxflid ||'''') >0
第2个回答  2012-03-09
动态SQL语句:

'select * .... where fxflid in ('''||Is_fxflid||''')'

?追问

主要是在写游标的时候 in 不了啊
能否写详细点 或举个列子

本回答被提问者采纳
第3个回答  2012-03-11
楼主可否把自己的游标贴出来追问

已经解决了 谢谢支持

在oracle的存储过程中,写select * from table where a in(1,2,3)语...
存储过程中不写“select * from table where a in(1,2,3);”这种语句吧。一般如果确定返回值只有一个的话,可以用select col_a into var_a from table where col_a = 1,要是有多个可以用游标

oracle procedure存储过程
OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS\/AS变量1 INTEGER :=0;变量2 DATE;BEGIN.END 存储过程名字2、SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_D...

oracle存储过程调用另一个存储过程
调用时没有实参,你应该按照函数定义时参数的个数和类型给函数传递同样个数和类型的参数,这是最基本的啊 你定义的是个函数,是函数就要返回值,你得用一个函数返回值同样类型的变量去接收这个返回值

oracle存储过程传入一个字符串参数'1,2,3,4,5,6,7,8',如何分割并转为数...
create or replace type type_split as table of varchar2(50); --创建一个type,如果为了使split函数具有通用性,请将其size 设大些。\\x0d\\x0a\\x0d\\x0a--创建function\\x0d\\x0acreate or replace function split\\x0d\\x0a(\\x0d\\x0a p_list varchar2,\\x0d\\x0a p_sep ...

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,
1、新建一个存储过程(Procedure)。2、修改存储过程,这个存储过程有一个输入参数(pid)跟一个输出参数(name),即通过用户id查询用户名称并将名称返回。3、调试存储过程,找到刚刚创建的存储过程右击并点击【test】选项。4、在打开的窗口内修改id值并点击左上角的倒三角形图标开始调试。5、按【CTRL+N】...

在oracle存储过程中,select语句的where条件出现in,怎样能将所有符合条...
in 后面跟的是值列表或者子查询,而不是 条件。比如:select * from table where a in('a','bc',...)或者 select * from table where a in(select xx from tab where ...)

oracle如何在sql执行带参存储过程语句
你的倒数2个参数: rtncode 、rtnmess都是out类型的参数,都需要带回值来的。out类型的参数,用常量进行调用,当然出错了。这样试试:declare vcode int; vmess varchar2(200);begin p_yjqr_mz_new('1','2','3',to_date('2014-08-01','yyyy-mm-dd'),'5',6,vcode,vmess); ...

oracle存储过程cursor后面加判断条件
如果要传变量的话,那你的写法有错误,正确的应该是:cursor xxx(c number)is select from a where ( c=1 and a.b='1')or (c<>1 and a.b ='3')

oracle中存储过程传入参数是一个int型,如何将其+1,然后在后面的操作中...
直接在代码中用啊,比如参数名为p_value,在你的代码中用p_value+1就行了,不管是条件比较的IF xxx=p_value+1,或者是给其它变量赋值xxx:=p_value+1,再或者插入数据时的insert into test(...) values(p_value+1,...)都可以。嫌麻烦的话,就声明一个本地变量,l_value number := p_...

select保存到存储过程建临时表
insert #临时表名(列1, 列2, 列3, ...)select (列1, 列2, 列3)from 表名 [where 查询条件][group by ...][order by...]临时表的列1,列2,列3和表的列1,列2,列3可以不同,但必须要匹配。

相似回答