写了这样一个存储过程:
PROCEDURE GetChildrenInfoFromLiuDong(sfzh in varchar2,gender in varchar2,Re_CURSOR OUT T_CURSOR)
IS
ssql varchar2(1000);
V_CURSOR T_CURSOR; //自定义的游标
BEGIN
if gender='男' then
ssql:='select distinct b.name,b.pid,b.GENDER,b.DOB from T_BASEDATA_LiuDongRK b where b.FQ_GMSFHM = '||''''||sfzh||'''';
else
ssql:='select distinct b.name,b.pid,b.GENDER,b.DOB from T_BASEDATA_LiuDongRK b where b.MQ_GMSFHM = '||''''||sfzh||'''';
end if;
OPEN V_CURSOR FOR
ssql;
Re_CURSOR := V_CURSOR;
END;
问题:
1、明明传的参数gender的值为'男',但测试时判断转到else下面的语句;
2、 '||''''||sfzh||''''这个得到的ssql字符串是''xxxxxx'',就是多了一个单引号,要怎么样得到一个单引号的字符串;
请帮我解决一下,谢谢!
------解决思路----------------------
1、你的if 和else两个语句不是一样的吗?
2、这样拼接没啥问题,拼接的动态语句中的两个引号,实际执行时是按一个引号去处理的,看了下你这么写应该没啥问题