国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

Sybase程序設(shè)計(jì)中極易造成誤解的內(nèi)部規(guī)則

2024-07-21 02:43:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SYBASE 數(shù)據(jù)庫(kù)是當(dāng)今在UNIX環(huán)境下最為流行的大型數(shù)據(jù)庫(kù)之一,本人在SYBASE下開(kāi)發(fā)和維護(hù)軟件的過(guò)程中,發(fā)現(xiàn)了一些SYBASE的內(nèi)部規(guī)則,在程序設(shè)計(jì)中極易造成誤解,而達(dá)不到預(yù)期的目的。下文將本人所發(fā)現(xiàn)的幾個(gè)問(wèn)題及其解決辦法敘述如下:

◆1、在sybase11.5中,組合兩個(gè)定長(zhǎng)的 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

我們期望的結(jié)果為0000x, 而實(shí)際上其結(jié)果為0000。

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

declare @val3 char(10)

select @val3 = @val_1 + @val_2

select @val3

這時(shí)你會(huì)得到的結(jié)果為0000 x (在0000后有四個(gè)空格)。

解決方法二:將char 改為 varchar 也可以達(dá)到預(yù)期的目的。

◆2、用alter table 增加表結(jié)構(gòu)時(shí),雖然用sp_recompile tablename 重編譯了所影響的數(shù)據(jù)庫(kù)對(duì)象,但在運(yùn)行某些包含"select * from tablename"的存儲(chǔ)過(guò)程時(shí),存儲(chǔ)進(jìn)程仍不認(rèn)識(shí)用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 增加表結(jié)構(gòu)后,包含"select * from tablename"的存儲(chǔ)過(guò)程,用sp_recompile tablename 重編譯仍不能使新增的列被存儲(chǔ)過(guò)程所識(shí)別。解決辦法只有一個(gè):刪了重建。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁城县| 江阴市| 蒙山县| 祁阳县| 上犹县| 如皋市| 黄梅县| 临汾市| 察雅县| 那曲县| 鄂温| 临江市| 云南省| 宜章县| 丹棱县| 上林县| 牡丹江市| 石阡县| 武城县| 密云县| 鹤峰县| 霸州市| 岚皋县| 汪清县| 石泉县| 化德县| 巴彦淖尔市| 乳源| 沙洋县| 文昌市| 辛集市| 额敏县| 禄丰县| 九寨沟县| 阿巴嘎旗| 双牌县| 双桥区| 红安县| 建始县| 建湖县| 巢湖市|