informix 幾個常見問題對資料庫版本的要求

liahtobjtosh發表於2009-10-30
informix 幾個常見問題對資料庫版本的要求[@more@]

一、 sequence 的支援

結論:
9.4以後的版本都支援 sequence

二、lvarchar 資料型別是否可以跨資料庫以及資料庫伺服器訪問

結論:
9.4版本 不支援 lvarchar 型別跨資料庫以及資料庫伺服器訪問
10.00版本 支援 lvarchar 型別跨資料庫以及資料庫伺服器訪問
11.5版本 支援 lvarchar 型別跨資料庫以及資料庫伺服器訪問

系統報錯資訊為:
999: Not implemented yet.


三、select 與 where 子句對 varchar 資料型別所支援的最大長度

結論:
9.4版本 不支援 select 與 where 子句 varchar 資料型別長度超過255位元組。
10.00版本 不支援 select 與 where 子句 varchar 資料型別長度超過255位元組。
11.5版本 支援 select 與 where 子句 varchar 資料型別長度超過255位元組。
否則系統將報錯:
881: Resulting string length from TRIM exceeds the limit.

解決方法:

select
cast(nvl(c0,'') as lvarchar(255))
||cast(nvl(c1,'') as lvarchar(255))
from lileilei where
cast(nvl(c0,'') as lvarchar(255))
||cast(nvl(c1,'') as lvarchar(255))
like '%a%';


四、select 與 where 子句對 lvarchar 資料型別所支援的最大長度

結論:
9.4 以後的版本對 lvarchar 資料型別在 select 與 where 子句的長度都可以達到32765.

五、是否支援外部函式

結論:
9.12 以後的版本都支援使用 C 語言設計和開發 DataBlade 模組來支援自定義型別(UDT)和自定義函式(UDR)。

開發 DataBlade 模組的大致過程:
1. 安裝 IBM Informix DataBlade Developer's Kit(DBDK)。
2. 用 C 語言開發UDT或UDR
3. 編譯 C UDR 並建立一個共享庫。
cc -c -fPIC -I?$INFORMIXDIR/incl/public imageUDR.c
ld -shared -melf_x86_64 -Bsymbolic -o imageUDR.so imageUDR.o
4. 註冊 C UDR (就像在informix 中建立一個函式一樣)
CREATE FUNCTION avgRGB( blob ) RETURNS INTEGER
WITH ( NOT VARIANT, HANDLESNULLS )
EXTERNAL NAME '?$INFORMIXDIR/extend/imageUDR.so( avgRGB )'
LANGUAGE C;
5. 像使用系統內部型別和函式一樣使用 UDT、UDR
select name,avgRed(image) as avgRed from images;

以上問題1-4是在現場或部門伺服器測試的結果(包括10.00版本的IDS),問題5參考以下網站:


http://www.ibm.com/developerworks/cn/data/library/techarticles/0207kelley/0207kelley.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1028291/,如需轉載,請註明出處,否則將追究法律責任。

相關文章