oracle开发的小技巧(原创)

一:使用rownum,伪列

由于单纯地使用ROWNUM无法实现对于查询的排序, 下面是一个简单的利用例子:

select username,rownum from dba_users  
where rownum < 4 order by username;

USERNAME                      ROWNUM
--------------------------    ------
OUTLN                              3
SYS                                1
SYSTEM                             2

这样就可以通过取得记录然后排序解决问题:

SELECT username,rownum FROM
   (SELECT username FROM dba_users ORDER BY username)
   WHERE ROWNUM < 4;
USERNAME                      ROWNUM
--------------------------    ------
AURORA$ORB$UNAUTHENTICATED         1
CTXSYS                             2
DBSNMP                             3

一个(>)符号和 rownum 一起使用时遇到负数则不会有结果:

  1  SELECT username,rownum FROM
  2     (SELECT username FROM dba_users ORDER BY username)
  3*    WHERE ROWNUM > 4
SQL> /
no rows selected

要显示最末的三条记录就不能使用(>):

  1  SELECT username,rownum FROM
  2     (SELECT username FROM dba_users ORDER BY username desc)
  3*    WHERE ROWNUM < 4
SQL> /


USERNAME                      ROWNUM
--------------------------    ------
TESTUSER                           1
SYSTEM                             2
SYS                                3  

------------
二:查询的时候,手动指定索
select /*+ index(tablename index_name)*/ from tablename

三:在oracle里使用大对象
private void writeclob()
{
 
  OracleConnection myOracleConnection = new OracleConnection();
   myOracleConnection.ConnectionString = ConfigurationSettings.AppSettings["ConnectionOraStr"];

   myOracleConnection.Open();
   OracleCommand myOracleCommand = myOracleConnection.CreateCommand();

   // step 1: create an OracleTransaction object
   OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction();   

   if (this.selectListValue.Text !="")
   {
    // step 2: read the row
    myOracleCommand.CommandText ="SELECT Autoid, P_itemContent " +"FROM Pcontent " +"WHERE Autoid = '"+this.selectListValue.Text+"'";
    OracleDataReader myOracleDataReader = myOracleCommand.ExecuteReader();
    myOracleDataReader.Read();

    // step 3: get the LOB locator
    OracleClob myOracleClob =myOracleDataReader.GetOracleClobForUpdate(1);

    // step 4: write to the LOB
    myOracleClob.Erase();
    string text = this.content.Text;
    char [] charArray = text.ToCharArray();
    myOracleClob.Write(charArray, 0, charArray.Length);

    // step 5: commit the transaction
    myOracleTransaction.Commit();

    // close the OracleDataReader and the OracleConnection object
    myOracleDataReader.Close();
    myOracleConnection.Close();  
   }

转载于:https://www.cnblogs.com/yuewh491/archive/2006/11/13/559255.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值