熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> DB2 >> 正文

DB2使用經驗備忘

2013-11-15 14:31:20  來源: DB2 

  安裝DB後可以通過命令窗口這樣的命令行方式或控制中心這樣的圖形界面方式來操作而如果你的數據庫服務端不在本機則還需要在客戶機配置輔助程序中做一個客戶端連接的配置

  控制中心中無法增刪改數據只能編寫sql語句來實現而quest提供的工具雖然能增加數據但居然無法用復制粘貼和Tab鍵必須逐個輸入然後用鼠標點擊切換現存數據看來可以在單元格中編輯修改但實際卻無法commit呵呵還是老老實實寫update語句至於刪除數據更是非寫delete語句不可不過可以用pb以單元格方式編輯數據相應的一個缺點是編輯數據的按鈕和刪除表的按鈕太近萬一點錯了刪除表的按鈕pb可是不作提示就把表給刪了的faint

  DB的視圖裡不能直接用order by語句必須這樣寫 select × from(select abc from table order by a)as tab

  這種寫法的前提是你已經打過補丁了

  存儲過程的問題:

  DB提供ltrim函數和rtrim函數但偏偏不提供trim函數如果你希望去除字符兩端的空格對不起必須用ltrim(rtrim()) 的方式調用insert 語句裡面居然不能用表達式賦值必須把值先賦給一個變量調用其他存儲過程時竟然不能用常量做參數必須把這個常量的值賦給一個變量再以這個變量為參數

  select * from table fetch first n rows only 語句居然在存儲過程裡不可用

  存儲過程裡可以使用動態sql但函數裡卻不可以使用kao

   遇到commit或rollback時自動關閉游標所以需要慎重使用單獨提交

  proc builder老是在調試中內存不足屏幕花掉而如果斷點調試時暫停不進行下去的時間稍微長一點就會提示超時受不了

  開發中遇到的一個問題

  在使用 日期變量+ MONTHS OR 日期變量 MONTHS 的方式取日期時比如日期變量值為 存儲過程裡將日期變量+ MONTHS 賦值給另一

  日期變量時會出錯相應SQLSTATE為(db ? ): 對 DATE 或TIMESTAMP值進行了調整以校正算術運算得出的無效日期

  如果要獲取的只是下一月份可采用的替代方法是獲取當前日期所在月份的第一天作為基准後+ MONTHS OR MONTHS

  哈哈今天幫別人弄存儲過程的經驗@

  搞了半天搞不定一查原來的文檔才了原來tmd該死的DB的存儲過程是轉換為C後進行編譯的因此在數據庫服務器上要安裝一個C編譯器才能完成存儲過程的編譯並且需要使用DBSET命令設置DB_SQLROUTINE_COMPILER_PATH指向C編譯器的安裝路徑如:dbset

  DB_SQLROUTINE_COMPILER_PATH=E:\ProgramFiles\MicrosoftVisualStudio\VC\Bin\vcvarsbat

  對變量的賦值不能用select into 方式而要用set v=(select )的方式代碼示例如下

drop function SXFMISORDERSUBMITDATE;
CREATE FUNCTION SXFMISORDERSUBMITDATE(IN_ROW_ID DECIMAL())
  RETURNS DATE
  LANGUAGE SQL
BEGIN ATOMIC
DECLARE V_SUBMIT_DATE DATE;
DECLARE V_SELL_ID DECIMAL( );
DECLARE V_BUY_ID DECIMAL( );

set V_SELL_ID = (SELECT COALESCE(RECEIVE_ID) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
set V_BUY_ID = (SELECT COALESCE(PAY_ID) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
set V_SUBMIT_DATE = (SELECT DATE(MAX(ASUBMIT_DATE)) FROM AM_AUDIT_QUEUE ASM_USER BSM_USER C
WHERE ATABLE_CODE=IS_ORDER AND ATABLE_ROW_ID=IN_ROW_ID
AND AAUDIT_EMP_ID=CROW_ID AND CBRANCH_ID=V_BUY_ID   審核方為付款方
AND ASUBMIT_EMP_ID=BROW_ID AND BBRANCH_ID=V_SELL_ID); 提交方為收款方

RETURN V_SUBMIT_DATE;
END;
#SYNC ;
 

  DB的游標打開後遇到commit和rollback默認是會關閉的保持游標打開的方法是在定義游標時加上with hold選項

  F:導出某張表的數據且該表包含long varchar型數據該如何操作Q:Export:db connect to [dbname] user [user] using [password]dbmove [dbname] export tn [tablename] u [user] p[password] (單表)dbmove [dbname] export tn [tablenametablename] u [user] p [password] (多表)Import:dbmove [dbname] import


From:http://tw.wingwit.com/Article/program/DB2/201311/21942.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.