pl/sql程序编写中遇到的一些问题及解决办法

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

1、在pl/sql中,orderby子句中的条件可以使用变量!

DECLARE
 v_orderbystrVARCHAR2(30);
 v_useridVARCHAR2(30);
 v_usernameVARCHAR2(30);
 v_genderNUMBER;
 v_rownumNUMBER;
 TYPEtcurISREFCURSOR;
 resultstcur;
 BEGIN
 v_rownum:=0;
 v_orderbystr:='username';
   OPENresultsFORselectuserId,userName,gender from
     (selectROWNUMASrowno,a.*from
     (select*fromhome_userorderbyv_orderbystr)a
     whererownum<10)
      whererowno>=1;
   LOOP
        FETCHresultsINTOv_userid,v_username,v_gender;
        EXITWHENresults%NOTFOUND;
        dbms_output.put_line(v_userid||''||v_username||''||v_gender);
        v_rownum:=v_rownum+1;
        ENDLOOP;
        CLOSEresults;
        dbms_output.put_line(v_rownum);
END;

2、而在写动态sql的存储过程中,发现在使用using子句时,发现不能把表名作为占位符的参数!而只能通过下边的办法来替代,即直接将表名与字符串相连,其他的变量则可以被占位符来替代;
        v_sqlStr:='SELECT*FROM(SELECTrownumrowno,t.*FROM'
             ||'(SELECTsequenceidmsgId,themeid,Id,topic,hits,replys,nickname'
             ||'FROM'||tablename||'WHEREthemeid=:a2ORDERBY:a3)tWHERErownum<:a4'
             ||')WHERErowno>=:a5';
         dbms_output.put_line(v_sqlStr);
         OPENo_resultsFORv_sqlStrUSINGp_themeId,v_OrderByStr,v_endRow,v_startRow;

3、在做一些翻页查询时,使用了伪列rownum,发现rownum只能用于rownum<10之类的应用,而不能是rownum>10;上例中实现了同时翻页的功能;

4、利用已经存在的表建立一个新表,并复制源表的表结构:
CREATETABLE newTable as(select*oldTablewhere1=2)


<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
文章标签: 存储 sql
个人分类: 数据库
想对作者说点什么? 我来说一句

安川伺服调试基本

2014年12月05日 61KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭