亚洲国产片在线观看,亚洲精品无码专区久久久,国产AV旡码专区亚洲AV苍井空http://m.tkk7.com/midstr/category/30639.html人生非夢(mèng)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對(duì)top支持不好),因?yàn)椴恢С智短住J褂玫氖侨缦碌膕ql:  
    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的,效率會(huì)比較高。
  2. 在存儲(chǔ)過程端使用set rowcount 來實(shí)現(xiàn)分頁,沒有試驗(yàn)。
  3. 用存儲(chǔ)過程,建立臨時(shí)表,獲取數(shù)據(jù),然后動(dòng)態(tài)sql獲得臨時(shí)表數(shù)據(jù)。最后從網(wǎng)上找到的如下的兩個(gè)分頁存儲(chǔ)過程:
    -- 按行讀取

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

        
    SELECT @dt= substring(convert(varcharrand()), 310)    --一個(gè)字符型的隨機(jī)數(shù)
        
        
    --將搜索結(jié)果放入臨時(shí)表中,表名隨機(jī)生成,在' FROM '前插入'INTO '+隨機(jī)臨時(shí)表名
        SELECT @SqlStr = stuff(@SqlStrcharindex(' FROM 'upper(@SqlStr)), 6 ,' INTO tempdb..Lining' + @dt + ' FROM ')
        
    EXECUTE (@SqlStr)
        
        
    --為臨時(shí)表增加id號(hào)
        SELECT @SqlStr = 'ALTER TABLE tempdb..Lining' + @dt + ' ADD TEMPDB_ID numeric(10) IDENTITY PRIMARY KEY'
        
    EXECUTE (@SqlStr)
        
        
    --計(jì)算臨時(shí)表中的記錄數(shù)
        --SELECT @SqlStr = 'SELECT Count(*) From tempdb..Lining' + @dt
        --EXECUTE (@SqlStr)
        
        
    --選取記錄號(hào)在起始行和結(jié)束行中間的記錄
        SELECT @SqlStr = 'SELECT * FROM tempdb..Lining'+@dt+' WHERE TEMPDB_ID > ' + convert(varchar@FirstRec+ ' and TEMPDB_ID <= ' + convert(varchar@LastRec)
        
    EXECUTE (@SqlStr)
        
        
    --刪除臨時(shí)表
        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)建一個(gè)分頁讀取過程
        @SqlStr         varchar(8000),    --SQL語句
        @PageSize       int,            --每頁記錄數(shù)
        @CurrentPage    int                --當(dāng)前頁數(shù)
    )
    AS
    DECLARE @FirstRec int@LastRec int@dt varchar(10)    --頁起始行,頁結(jié)束行,生成臨時(shí)表的隨機(jī)數(shù)
    BEGIN

        
    SELECT @FirstRec = (@CurrentPage - 1* @PageSize    --計(jì)算頁起始行
        SELECT @LastRec = (@CurrentPage * @PageSize + 1)    --計(jì)算頁結(jié)束行
        
        
    SELECT @dt= substring(convert(varchar,rand()),3,10)    --一個(gè)字符型的隨機(jī)數(shù)
        
        
    --將搜索結(jié)果放入臨時(shí)表中,表名隨機(jī)生成,在' FROM '前插入'INTO '+隨機(jī)臨時(shí)表名
        SELECT @SqlStr = stuff(@SqlStrcharindex(' FROM ',upper(@SqlStr)), 6 ,' INTO tempdb..Paging'+@dt+' FROM ')
        
    EXECUTE (@SqlStr)
        
        
    --為臨時(shí)表增加id號(hào)
        SELECT @SqlStr = 'ALTER TABLE tempdb..Paging'+@dt+' ADD TEMPDB_ID numeric(10) IDENTITY PRIMARY KEY'
        
    EXECUTE (@SqlStr)
        
        
    --計(jì)算臨時(shí)表中的記錄數(shù)
        --SELECT @SqlStr = 'SELECT Count(*) From tempdb..Paging'+@dt
        --EXECUTE (@SqlStr)
        
        
    --選取記錄號(hào)在起始行和結(jié)束行中間的記錄
        SELECT @SqlStr = 'SELECT * FROM tempdb..Paging'+@dt+' WHERE TEMPDB_ID > '+convert(varchar,@FirstRec)+' and TEMPDB_ID < '+convert(varchar,@LastRec)
        
    EXECUTE (@SqlStr)
        
        
    --刪除臨時(shí)表
        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í)表的隨機(jī)數(shù)
    select @FirstRec = (@CurrentPage - 1* @PageSize    -- 計(jì)算頁起始行
    
    
    
-- 將搜索結(jié)果放入臨時(shí)表中,表名隨機(jī)生成,在' from '前插入'into '+隨機(jī)臨時(shí)表名
    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 '
    
    
-- 選取記錄號(hào)在起始行和結(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ā)表評(píng)論
]]>
soloaris發(fā)布項(xiàng)目中文漢字“〇”亂碼問題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)為是個(gè)符號(hào),而不是漢字,U+3000附近的是全角的逗號(hào)、頓號(hào)、句號(hào)之流,而漢字(CJK基本集)是U+4E00~U+9FA5。
       另外一位同事給出解決方案:
       solaris下啟動(dòng)TOMCAT之前,先執(zhí)行一下如下操作:
             LANG=zh_CN.GB18030
             export LANG
       然后再啟動(dòng)。

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



歲月如歌 2008-09-30 16:47 發(fā)表評(píng)論
]]>
關(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的用戶手冊(cè),n的范圍為數(shù)據(jù)的頁大小,
   即使用select @@maxpagesize查到的數(shù)字。
 
除非設(shè)定string_rtruncation on,Adaptive Server將條目截?cái)嗟街付械拈L度而不加警告或出現(xiàn)錯(cuò)誤信息。
2、數(shù)據(jù)庫從cp850遷移到utf-8環(huán)境之后,原來的獲取當(dāng)事人名稱的存儲(chǔ)過程返回的結(jié)果有誤,即有名稱被截取的問題,如下代碼: 
 
-- 去掉末尾的頓號(hào)
    set @MC = substring(@MC1len(@MC- 2)


比如說當(dāng)事人名稱為“張三、李四、”,在原來的cp850庫返回的結(jié)果是“張三、李四。但是升級(jí)到utf-8之后,返回的就是“張三、李”。
  主要是cp850字符集,一個(gè)漢字占兩個(gè)字節(jié),而升級(jí)到utf-8之后就占三個(gè)字節(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é)果都是"張三、李四"
  所以最終把代碼改為如下就正確了,字符集就不會(huì)影響結(jié)果。
-- 去掉末尾的頓號(hào)
    set @MC = substring(@MC1len(@MC- len('、'))
經(jīng)??吹綌?shù)據(jù)庫版本限制引起的各種問題,看來有些知識(shí)需要普及一下。
除了查手冊(cè)外,再提供一種比較方便的方法,可以得到當(dāng)前ASE服務(wù)器上各項(xiàng)限制值。
執(zhí)行如下命令即可:
dbcc traceon(3604)
go
dbcc serverlimits
go


歲月如歌 2008-09-19 17:05 發(fā)表評(píng)論
]]>
關(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

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

另外從性能上,在K_MS.. B_MS上做實(shí)驗(yàn),數(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其他
任何非主鍵字段,則速度一般會(huì)比較慢,尤其是哪些非索引字段。

歲月如歌 2008-08-30 14:51 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 亚洲免费综合色在线视频| 成人A毛片免费观看网站| 青青草原1769久久免费播放| 国产乱色精品成人免费视频| 亚洲欧美国产国产一区二区三区| 成年人视频免费在线观看| 亚洲AV一二三区成人影片| 9420免费高清在线视频| 亚洲av无码电影网| 久久亚洲中文字幕精品有坂深雪| a级片免费在线播放| 亚洲大尺码专区影院| 免费毛片在线播放| 中国一级毛片视频免费看| 日韩在线观看免费| 亚洲成A人片777777| 7723日本高清完整版免费| 最近免费2019中文字幕大全| 91在线免费观看| 无码国产精品一区二区免费16| 亚洲人成网男女大片在线播放| 亚洲成AⅤ人影院在线观看| 5555在线播放免费播放| 性生大片视频免费观看一级| 免费精品国产自产拍在线观看| 亚洲综合在线成人一区| 亚洲中文字幕无码一区二区三区 | 3344在线看片免费| 亚洲精品无码成人片久久不卡 | 四虎国产精品免费久久影院| 日韩免费观看的一级毛片| 小草在线看片免费人成视久网| 亚洲成人免费电影| 在线观看91精品国产不卡免费| 亚洲Av无码乱码在线观看性色| 亚洲欧洲日产国码av系列天堂| 亚洲人AV永久一区二区三区久久| 无码中文字幕av免费放| 中文字幕亚洲专区| 国产亚洲精品成人AA片新蒲金 | 99精品视频免费观看|