数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
pl/sql程序编写中遇到的一些问题及解决办法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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

DECLARE
 v_orderbystr VARCHAR2(30);
 v_userid VARCHAR2(30);
 v_username VARCHAR2(30);
 v_gender NUMBER;
 v_rownum NUMBER;
 TYPE tcur IS REF CURSOR;
 results tcur;
 BEGIN
 v_rownum:=0;
 v_orderbystr:='username';
    OPEN results FOR select userId,userName,gender  from
      (select ROWNUM AS rowno, a.* from
      (select * from home_user order by v_orderbystr) a
      where rownum<10)
       where rowno>=1;
    LOOP
         FETCH results INTO v_userid,v_username,v_gender;
         EXIT WHEN results%NOTFOUND;
         dbms_output.put_line(v_userid||' '||v_username||' '||v_gender);
         v_rownum:=v_rownum+1;
         END LOOP;
         CLOSE results;
         dbms_output.put_line(v_rownum);
END;

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

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

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




相关文章

相关软件