• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Sybase編程中出現的錯誤及其解決辦法

    發布: 2008-8-19 17:38 | 作者: 網絡轉載 | 來源: Tech.acnow.net | 查看: 19次 | 進入軟件測試論壇討論

    領測軟件測試網 SYBASE 數據庫是當今在UNIX環境下最為流行的大型數據庫之一,本人在SYBASE下開發和維護軟件的過程中,發現了一些SYBASE的內部規則,在程序設計中極易造成誤解,而達不到預期的目的。下文將本人所發現的幾個問題及其解決辦法敘述如下: 

    1、在sybase11.5中,組合兩個定長的 char(x)="aaa",char (y)="bbb"; char(x)+char(y)!="aaabbb" 


    declare @val_1 char(8) 
    declare @val_2 char(1) 
    select @val_2 = ’x’ 
    select @val_1 = "0000" 
    select @var_1= @val_1 + @val_2 
    select @var_1
     

    我們期望的結果為0000x, 而實際上其結果為0000。 

    解決方法一:當我們將"select @var_1=@val_1+@val_2",改為"select @var_1=rtrim(@var_1)+@var_2"時,我們便看到了我們所期望的結果。為什么呢?在有的SYBASE版本中存儲一個char(n)時,在其真實值后補上了相應數量的空格,在本例中,存儲在@var_1中的是0000 (在0000后有四個空格)。你可以加上如下兩句來驗證: 


    declare @val3 char(10) 
    select @val3 = @val_1 + @val_2 
    select @val3
     

    這時你會得到的結果為0000 x (在0000后有四個空格)。 

    解決方法二:將char 改為 varchar 也可以達到預期的目的。 

    2、用alter table 增加表結構時,雖然用sp_recompile tablename 重編譯了所影響的數據庫對象,但在運行某些包含"select * from tablename"的存儲過程時,存儲進程仍不認識用alter table 增加的列。例: 


    1> create table tmp(aa int,bb int) 
    2> go 
    1> create table b_tmp(aa int,bb int) 
    2>go 
    1> create proc tmpstore 
    2> as  
    1> insert b_tmp select * from tmp 
    2> return 
    3> go 
    1> alter table tmp add cc char(8) null 
    2> go 
    1> alter table b_tmp add cc char(8) null 
    2> go 
    1> sp_recompile tmp 
    2> go 
    1>insert tmp values(12,1234,"abcdefg") 
    2>go 
    1> exec tmpstore 
    2> go 
    1> select * from b_tmp 
    2> go 
    aabbcc 
    ----------- ------------- ------------- 
    121234NULL
     

    為什么cc字段是NULL,而不是"abcdefg"? 用alter table 增加表結構后,包含"select * from tablename"的存儲過程,用sp_recompile tablename 重編譯仍不能使新增的列被存儲過程所識別。解決辦法只有一個:刪了重建。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: Sybase SYBASE 辦法 解決


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>