hur.cn - 华软网

 热门搜索

这样的游标SQL怎么写?(ORACLE数据库)

  作者:未知    来源:网络    更新时间:2017/12/5
ls_parmStr="'123','234','222'"

declare lcr_cur cursor for
SELECT MID,PID from monter where MID in(:ls_parmStr);

我这样写取不出结果.但我在SQL WORKSHEET中写
SELECT MID,PID from monter where MID in('123','234','222');
可以取到结果.
请问这种游标SQL怎么写?
------华软网友回答------
这么写,试试:
SELECT MID,PID from monter where (MID='123')or(MID='234')or(MID='222') ;
------华软网友回复------
ls_parmStr="('123','234','222')"

declare lcr_cur cursor for
SELECT MID,PID from monter where MID in :ls_parmStr;


------华软网友回复------
SORRY,没说清楚,ls_parmStr里面的值是不定的,可能有很多个.
------华软网友回复------
ls_parmstr是数组??
------华软网友回复------
ls_parmstr是拼起来的字符串.

to xzxxiong(天策) :我试了,这样也不行.
ls_parmStr="('123','234','222')"

declare lcr_cur cursor for
SELECT MID,PID from monter where MID in :ls_parmStr;
------华软网友回复------
在pb中实现么
  你可以尝试增加一个datastore,然后用dw_1.setsqlselect(ls_sql)的方式
  其中ls_sql就是你拼出来的sql


------华软网友回复------
用动态游标实现:
    string Stringvar, Sqlstatement

integer Intvar
Sqlstatement = "SELECT emp_id FROM employee"//在此组合你的sql
PREPARE SQLSA FROM :Sqlstatement ;
DESCRIBE SQLSA INTO SQLDA ;
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;
OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA ;
FETCH my_cursor USING DESCRIPTOR SQLDA ;

是pb帮助中的
------华软网友回复------
还有
   建议不用in,效率太差,改成exists效率要高的多
------华软网友回复------
怎么不用like

declare lcr_cur cursor for
SELECT MID,PID from monter where "'"+MID+"'" like :ls_parmStr
------华软网友回复------
用LIKE,相信会产生很多错误结果,毕竟数据类型是字符串的.
如果产生的ls_parmStr是可以控制的,是不是定义为数组甚至是存为临时表.这样的话才能方便操纵?

------华软网友回复------
参考

http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=204545
------华软网友回复------
用我的like语句是不会产生错误数据的,我在MID的两边加了引号那么就只有包含'mid'才会满足记录,你可以试一下
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。