|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也就是说在php本地调用pdoprepare中的mysql_real_escape_string来操作query,使用的是本地单字节字符集,即编码为xbfx5cx27,并带入到mysql中查询,由于使用setnames设置了连接字符集.静态|办理|排序|成绩
我们常碰到一个存储历程要做都种排序的情形。一般orderby的前提只要一个流动的,这是远远不敷的。必要用一个变量来交换它,而Oracle有不克不及辨认Orderby前面的字符串。该怎样办呢?先看看我的一个糟计划:
IFmyorderby=OBJECTIDDESCthen--按称号排序
OPENoutcurFORSELECT*FROM(
SELECTrownumrowno,t.*FROM(
SELECTOBJECTID,HITS,POSTTIMEFROMCARTOONORDERBYOBJECTIDDESC)t
WHERErownum<endRow)WHERErowno>=startRow;
elsifmyorderby=HITSDESCthen--按点击率排序
OPENoutcurFORSELECT*FROM(
SELECTrownumrowno,t.*FROM(
SELECTOBJECTID,HITS,POSTTIMEFROMCARTOONORDERBYHITSDESC)t
WHERErownum<endRow)WHERErowno>=startRow;
else--定时间排序
OPENoutcurFORSELECT*FROM(
SELECTrownumrowno,t.*FROM(
SELECTOBJECTID,HITS,POSTTIMEFROMCARTOONORDERBYHITSDESC)t
WHERErownum<endRow)WHERErowno>=startRow;
ENDIF;
这固然是一般利用的两种排序体例得以功过,但显得冗杂并且不敷通用。
这时候我的同事的好举措:
---------------------------------------------------------------------------
IF(myorderbyisnotnull)then
mysql:=SELECT*FROM(SELECTrownumrowno,t.*FROM(
SELECTOBJECTID,HITS,POSTTIMEFROMCARTOONORDERBY||myorderby||
)tWHERErownum<||endRow||)WHERErowno>=||startRow;
else
mysql:=SELECT*FROM(SELECTrownumrowno,t.*FROM(
SELECTOBJECTID,HITS,POSTTIMEFROMCARTOONORDERBYposttimeDESC)t
WHERErownum<||endRow||)WHERErowno>=||startRow;
ENDIF;
OPENoutcurFORmysql;
怎样,感到与众不同吧。但愿你能有更好的举措。
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。 |
|