亚洲精品无码久久久久去q,亚洲国产精品无码专区影院,亚洲色偷偷av男人的天堂http://m.tkk7.com/midstr/category/30639.html人生非夢zh-cnFri, 06 Nov 2009 16:31:24 GMTFri, 06 Nov 2009 16:31:24 GMT60sybase數(shù)據(jù)庫端分頁http://m.tkk7.com/midstr/archive/2008/10/14/234258.html歲月如歌歲月如歌Tue, 14 Oct 2008 08:36:00 GMThttp://m.tkk7.com/midstr/archive/2008/10/14/234258.htmlhttp://m.tkk7.com/midstr/comments/234258.htmlhttp://m.tkk7.com/midstr/archive/2008/10/14/234258.html#Feedback0http://m.tkk7.com/midstr/comments/commentRss/234258.htmlhttp://m.tkk7.com/midstr/services/trackbacks/234258.html      基本的思路有如下幾種:

  1. 從12.5.3版本開始sybase支持top關(guān)鍵字,試著使用,但是未果(同事說sybase對top支持不好),因為不支持嵌套。使用的是如下的sql:  
    select top 10 t1.AH, t1.BH from K_ZS..B_MS t1 where t1.BH not in (select top 20 t2.BH from K_ZS..B_MS t2) 
    這里的是不帶order by的,另外一種是帶order by的,效率會比較高。
  2. 在存儲過程端使用set rowcount 來實現(xiàn)分頁,沒有試驗。
  3. 用存儲過程,建立臨時表,獲取數(shù)據(jù),然后動態(tài)sql獲得臨時表數(shù)據(jù)。最后從網(wǎng)上找到的如下的兩個分頁存儲過程:
    -- 按行讀取

    CREATE PROCEDURE GetDataByLine
    (
            
    --創(chuàng)建一個分頁讀取過程
        @SqlStr         varchar(8000),    --SQL語句
        @FirstRec       int,        --頁起始行
        @LastRec        int        --頁結(jié)束行
    )
    AS
    DECLARE @dt varchar(10)    --生成臨時表的隨機數(shù)
    BEGIN

        
    SELECT @dt= substring(convert(varcharrand()), 310)    --一個字符型的隨機數(shù)
        
        
    --將搜索結(jié)果放入臨時表中,表名隨機生成,在' FROM '前插入'INTO '+隨機臨時表名
        SELECT @SqlStr = stuff(@SqlStrcharindex(' FROM 'upper(@SqlStr)), 6 ,' INTO tempdb..Lining' + @dt + ' FROM ')
        
    EXECUTE (@SqlStr)
        
        
    --為臨時表增加id號
        SELECT @SqlStr = 'ALTER TABLE tempdb..Lining' + @dt + ' ADD TEMPDB_ID numeric(10) IDENTITY PRIMARY KEY'
        
    EXECUTE (@SqlStr)
        
        
    --計算臨時表中的記錄數(shù)
        --SELECT @SqlStr = 'SELECT Count(*) From tempdb..Lining' + @dt
        --EXECUTE (@SqlStr)
        
        
    --選取記錄號在起始行和結(jié)束行中間的記錄
        SELECT @SqlStr = 'SELECT * FROM tempdb..Lining'+@dt+' WHERE TEMPDB_ID > ' + convert(varchar@FirstRec+ ' and TEMPDB_ID <= ' + convert(varchar@LastRec)
        
    EXECUTE (@SqlStr)
        
        
    --刪除臨時表
        SELECT @SqlStr = 'DROP TABLE tempdb..Lining'+@dt
        
    EXECUTE (@SqlStr
      
    END

    /*
    some comments:
    1.@SqlStr     varchar(8000), depends on your page size
    2. this is a generic paging sp, if you just want to use it for specific table, 
       you'd better change the 'tempdb..Lining' to #Paging, the performance will be better
    */

    -- 按頁讀取

    CREATE PROCEDURE GetDataByPage
    (
        
    --創(chuàng)建一個分頁讀取過程
        @SqlStr         varchar(8000),    --SQL語句
        @PageSize       int,            --每頁記錄數(shù)
        @CurrentPage    int                --當(dāng)前頁數(shù)
    )
    AS
    DECLARE @FirstRec int@LastRec int@dt varchar(10)    --頁起始行,頁結(jié)束行,生成臨時表的隨機數(shù)
    BEGIN

        
    SELECT @FirstRec = (@CurrentPage - 1* @PageSize    --計算頁起始行
        SELECT @LastRec = (@CurrentPage * @PageSize + 1)    --計算頁結(jié)束行
        
        
    SELECT @dt= substring(convert(varchar,rand()),3,10)    --一個字符型的隨機數(shù)
        
        
    --將搜索結(jié)果放入臨時表中,表名隨機生成,在' FROM '前插入'INTO '+隨機臨時表名
        SELECT @SqlStr = stuff(@SqlStrcharindex(' FROM ',upper(@SqlStr)), 6 ,' INTO tempdb..Paging'+@dt+' FROM ')
        
    EXECUTE (@SqlStr)
        
        
    --為臨時表增加id號
        SELECT @SqlStr = 'ALTER TABLE tempdb..Paging'+@dt+' ADD TEMPDB_ID numeric(10) IDENTITY PRIMARY KEY'
        
    EXECUTE (@SqlStr)
        
        
    --計算臨時表中的記錄數(shù)
        --SELECT @SqlStr = 'SELECT Count(*) From tempdb..Paging'+@dt
        --EXECUTE (@SqlStr)
        
        
    --選取記錄號在起始行和結(jié)束行中間的記錄
        SELECT @SqlStr = 'SELECT * FROM tempdb..Paging'+@dt+' WHERE TEMPDB_ID > '+convert(varchar,@FirstRec)+' and TEMPDB_ID < '+convert(varchar,@LastRec)
        
    EXECUTE (@SqlStr)
        
        
    --刪除臨時表
        SELECT @SqlStr = 'DROP TABLE tempdb..Paging'+@dt
        
    EXECUTE (@SqlStr
      
    END

    /*
    some comments:
    1. @SqlStr     varchar(8000), depends on your page size
    2. this is a generic paging sp, if you just want to use it for specific table, 
       you'd better change the 'tempdb..Paging' to #Paging, the performance will be better
    */


-- 清空日志
Dump Transaction DB_BD With truncate_only
go

use DB_BD
go

if existsselect 1 from sysobjects
             
where id = object_id'PR_GET_PAGESIZE' )
               
and sysstat & 15 = 4 )
  
drop procedure PR_GET_PAGESIZE
go

create procedure PR_GET_PAGESIZE (
    
@SqlStr         varchar(8000),    -- SQL語句
    @PageSize       int,                  -- 每頁記錄數(shù)
    @CurrentPage    int                      -- 當(dāng)前頁數(shù)
)
as
begin
    
declare @FirstRec int,     -- 頁起始行  
          @maxCount int,     -- 頁結(jié)束行
          @dt varchar(10)       -- 生成臨時表的隨機數(shù)
    select @FirstRec = (@CurrentPage - 1* @PageSize    -- 計算頁起始行
    
    
    
-- 將搜索結(jié)果放入臨時表中,表名隨機生成,在' from '前插入'into '+隨機臨時表名
    select @SqlStr = stuff(@SqlStrcharindex(' from ',lower(@SqlStr)), 6,
      
', TEMPDB_ID = identity(11) into #temp_page from ')
    
    
-- 設(shè)置結(jié)束行
    select @maxCount = @PageSize*@CurrentPage
    
select @SqlStr = 'set rowcount ' + convert(varchar@maxCount
                    
+  ' ' + @SqlStr 
                    
+ '  set rowcount 0 '
    
    
-- 選取記錄號在起始行和結(jié)束行中間的記錄  
    select @SqlStr = @SqlStr + ' select * from #temp_page where TEMPDB_ID > ' + convert(varchar@FirstRec
    
print '%1!'@SqlStr  
    
execute (@SqlStr)
  
end
go

sp_procxmode PR_GET_PAGESIZE, anymode
go


歲月如歌 2008-10-14 16:36 發(fā)表評論
]]>
soloaris發(fā)布項目中文漢字“〇”亂碼問題http://m.tkk7.com/midstr/archive/2008/09/30/231896.html歲月如歌歲月如歌Tue, 30 Sep 2008 08:47:00 GMThttp://m.tkk7.com/midstr/archive/2008/09/30/231896.htmlhttp://m.tkk7.com/midstr/comments/231896.htmlhttp://m.tkk7.com/midstr/archive/2008/09/30/231896.html#Feedback0http://m.tkk7.com/midstr/comments/commentRss/231896.htmlhttp://m.tkk7.com/midstr/services/trackbacks/231896.htmljdbc:sybase:Tds:172.16.6.114:6000/DB_LC?charset=utf8)。
       程序發(fā)布到soloaris環(huán)境之后,在html頁面中文漢字“〇”顯示為亂碼“??”,咨詢一位高手得到如下解答:
      “〇”的GB系列編碼是A996,非GB-2312集合所包含,GBK集合才引入;〇的unicode編碼是U+3007,大約被認(rèn)為是個符號,而不是漢字,U+3000附近的是全角的逗號、頓號、句號之流,而漢字(CJK基本集)是U+4E00~U+9FA5。
       另外一位同事給出解決方案:
       solaris下啟動TOMCAT之前,先執(zhí)行一下如下操作:
             LANG=zh_CN.GB18030
             export LANG
       然后再啟動。

      問題解決,最后把這兩句加在了catalina.sh文件的最前面,以免每次啟動都得單獨執(zhí)行。



歲月如歌 2008-09-30 16:47 發(fā)表評論
]]>
關(guān)于varchar的長度和數(shù)據(jù)庫字符集遷移的問題http://m.tkk7.com/midstr/archive/2008/09/19/229976.html歲月如歌歲月如歌Fri, 19 Sep 2008 09:05:00 GMThttp://m.tkk7.com/midstr/archive/2008/09/19/229976.htmlhttp://m.tkk7.com/midstr/comments/229976.htmlhttp://m.tkk7.com/midstr/archive/2008/09/19/229976.html#Feedback0http://m.tkk7.com/midstr/comments/commentRss/229976.htmlhttp://m.tkk7.com/midstr/services/trackbacks/229976.htmlsybase的用戶手冊,n的范圍為數(shù)據(jù)的頁大小,
   即使用select @@maxpagesize查到的數(shù)字。
 
除非設(shè)定string_rtruncation on,Adaptive Server將條目截斷到指定列的長度而不加警告或出現(xiàn)錯誤信息。
2、數(shù)據(jù)庫從cp850遷移到utf-8環(huán)境之后,原來的獲取當(dāng)事人名稱的存儲過程返回的結(jié)果有誤,即有名稱被截取的問題,如下代碼: 
 
-- 去掉末尾的頓號
    set @MC = substring(@MC1len(@MC- 2)


比如說當(dāng)事人名稱為“張三、李四、”,在原來的cp850庫返回的結(jié)果是“張三、李四。但是升級到utf-8之后,返回的就是“張三、李”。
  主要是cp850字符集,一個漢字占兩個字節(jié),而升級到utf-8之后就占三個字節(jié)了,所以這里的減2就不正確了。
  執(zhí)行如下的腳本
declare @MC varchar(100
declare @length int
set @MC = '張三、李四、'
set @length = len(@MC)
print '%1!'@length
set @MC = substring(@MC1len(@MC- len(''))
print '%1!'@MC
在cp850下,print '%1!', @length打印的長度為12,而在utf-8下則返回的是6。當(dāng)然print '%1!', @MC打印的結(jié)果都是"張三、李四"
  所以最終把代碼改為如下就正確了,字符集就不會影響結(jié)果。
-- 去掉末尾的頓號
    set @MC = substring(@MC1len(@MC- len(''))
經(jīng)常看到數(shù)據(jù)庫版本限制引起的各種問題,看來有些知識需要普及一下。
除了查手冊外,再提供一種比較方便的方法,可以得到當(dāng)前ASE服務(wù)器上各項限制值。
執(zhí)行如下命令即可:
dbcc traceon(3604)
go
dbcc serverlimits
go


歲月如歌 2008-09-19 17:05 發(fā)表評論
]]>
關(guān)于count函數(shù)http://m.tkk7.com/midstr/archive/2008/08/30/225739.html歲月如歌歲月如歌Sat, 30 Aug 2008 06:51:00 GMThttp://m.tkk7.com/midstr/archive/2008/08/30/225739.htmlhttp://m.tkk7.com/midstr/comments/225739.htmlhttp://m.tkk7.com/midstr/archive/2008/08/30/225739.html#Feedback1http://m.tkk7.com/midstr/comments/commentRss/225739.htmlhttp://m.tkk7.com/midstr/services/trackbacks/225739.htmlsybase的Transact-SQL用戶指南是這樣說的: count 得出表達(dá)式中非空值的數(shù)量,而 count(*) 得出表中的總行數(shù)。

select count(LAAY) from K_ZS.. B_MS
select count(distinct LAAY) from K_ZS.. B_MS
select count(*) from K_ZS..B_MS

上面的三條sql在2.106開發(fā)庫上執(zhí)行結(jié)果如下:
-----------
      61940
-----------
        353           
-----------
      72127

    以前老以為對同一個查詢條件,count(fieldname)和count(*)的結(jié)果是一樣的……所以首先要對count函數(shù)的定義清楚,
從我們一般使用count函數(shù)的角度,這里最好就是用count(*) 或者count(主鍵),或者是一個肯定不為null的列,不然結(jié)果就可能少了。

另外從性能上,在K_MS.. B_MS上做實驗,數(shù)據(jù)為1472435條(其中BH為主鍵):
引用:
select count(*) from K_MS.. B_MS
  Execution Time 2.
  SQL Server cpu time: 200 ms.  SQL Server elapsed time: 283 ms.

  select count(BH) from K_MS.. B_MS  
  Execution Time 2.
  SQL Server cpu time: 200 ms.  SQL Server elapsed time: 233 ms.
如果用表中的其他非主鍵字段(其中LAAY、JBFY為索引字段,SPCX普通字段),比如
引用:
select count(LAAY) from K_MS.. B_MS
  Execution Time 4.
  SQL Server cpu time: 400 ms.  SQL Server elapsed time: 326 ms.

  select count(SPCX) from K_MS.. B_MS
  Execution Time 194.
  SQL Server cpu time: 19400 ms.  SQL Server elapsed time: 28373 ms.

  select count(JBFY) from K_MS.. B_MS
  Execution Time 16.
  SQL Server cpu time: 1600 ms.  SQL Server elapsed time: 2436 ms.
多次執(zhí)行以上sql可以得出初步結(jié)論:count(主鍵)最快,count(*)次之,并且兩者性能差異不大;但是如果count其他
任何非主鍵字段,則速度一般會比較慢,尤其是哪些非索引字段。

歲月如歌 2008-08-30 14:51 發(fā)表評論
]]>
主站蜘蛛池模板: 成人免费一区二区无码视频| 又黄又爽的视频免费看| 亚洲乱码在线卡一卡二卡新区| 在线a人片天堂免费观看高清| 男女男精品网站免费观看| 亚洲av无码国产精品夜色午夜| 91免费精品国自产拍在线不卡| 国产精品亚洲综合| 亚洲精品线在线观看| 日韩一区二区免费视频| 在线观看免费播放av片| 中日韩亚洲人成无码网站| 国产亚洲情侣一区二区无| 无码日韩人妻av一区免费 | 成人久久久观看免费毛片| 91久久亚洲国产成人精品性色| 日韩一级在线播放免费观看| 精品无码人妻一区二区免费蜜桃 | japanese色国产在线看免费| 亚洲成人网在线播放| 久久精品国产亚洲AV不卡| 免费精品国产日韩热久久| a级毛片高清免费视频| 亚洲日韩亚洲另类激情文学| 亚洲成人在线网站| 日韩亚洲变态另类中文| 色视频色露露永久免费观看| 91精品导航在线网址免费| 香蕉视频在线免费看| 亚洲人成网站在线播放2019| 中文字幕亚洲色图| 亚洲精品~无码抽插| 免费又黄又爽又猛的毛片| 18禁无遮挡无码网站免费| 久久国产高潮流白浆免费观看 | 无码专区永久免费AV网站| 久久国产精品免费看| 国产精品免费αv视频| 国产精品亚洲精品久久精品 | 国产91精品一区二区麻豆亚洲| 在线观看免费为成年视频|