create or replace procedure GetPatInfo
(
p_patid in varchar,
p_cursor out CURSOR
) is
begin
open p_cursor for
select *
from inhos.advice_fee
where patid in (p_patid);
end GetPatInfo;-------------------------------------------------------------
存储过程要达到以下sql语句的效果
select *
from inhos.advice_fee
where patid in ('001','008')
单传一个值,比如001,存储过程是可以返回正确结果,但是传两个以上值就不行,返回结果集为空。
请问各位高手,001, 008等多个值如何从程序中传入?
或者存储过程应该如何改造?
单传001,存储过程是可以返回正确结果,但是传两个以上值就不行。
(
p_patid in varchar,
p_cursor out CURSOR
) is
begin
open p_cursor for
select *
from inhos.advice_fee
where patid in (p_patid);
end GetPatInfo;-------------------------------------------------------------
存储过程要达到以下sql语句的效果
select *
from inhos.advice_fee
where patid in ('001','008')
单传一个值,比如001,存储过程是可以返回正确结果,但是传两个以上值就不行,返回结果集为空。
请问各位高手,001, 008等多个值如何从程序中传入?
或者存储过程应该如何改造?
单传001,存储过程是可以返回正确结果,但是传两个以上值就不行。
(
p_patid in varchar,
p_cursor out CURSOR
) is
v_sqlString varchar2(500);
begin
v_sqlString := '
select *
from inhos.advice_fee
where patid in ('||p_patid||')';
open p_cursor for
v_sqlString;
end GetPatInfo;
-------------------------------------------
问题得到解决!!!
(
p_patid in varchar,
p_cursor out CURSOR
) is
v_sqlString varchar2(500);
begin
v_sqlString := 'select * from inhos.advice_fee where patid in (''' || replace(p_patid,',',''',''') || ''')';
open p_cursor for
v_sqlString;
end GetPatInfo;
你需要的类型和在实际参数传入以后格式上有差异,所以就没有结果了
拼凑Sql语句确实是个不错的选择,用heyixiang(子豚の愛人)的方法就OK
heyixiang(子豚の愛人)拼凑的语句,需要传入形如 001, 002, 003的值