程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 淺談IBM DB2數據庫如何遷移問題(6)

淺談IBM DB2數據庫如何遷移問題(6)

編輯:關於SqlServer


 構建例程

  為了構建 C 例程(UDF 或 存儲過程),必須首先對其進行預編譯、編譯以及鏈接。該過程可通過批文件 bldrtn (UNIX/LINUX 上)或 bldrtn.bat (Windows 上)自動完成,該文件包含在隨 DB2 一同安裝的樣本中。可以在 UNIX/Linux 上的 /sqllib/samples/c 目錄或 Windows 上的

  bldrtn [dbname userid passWord]

  如果未提供 dbname,那麼批文件會將之默認為 SAMPLE ,而 userid 和 passWord 則被默認為當前會話的用戶 ID 和口令。

  清單 7 演示了使用 bldrtn 批文件在 functions.sqc 文件中進行的例程構建。

  清單7. 在 functions 文件上執行 buildrn

  bldrtn functions

  值得說明的是,可能需要對 Windows 平台上的 bldrtn 批文件進行編輯

  以便在鏈接指令中包含 ws2_32.lib。應按照下列方法來修改該文件:


  :link_step
  rem Link the program.
  link -debug -out:%1.dll -dll %1.obj db2api.lib ws2_32.lib -def:%1.def


  在成功構建 C 例程之後,其共享庫會被自動地移到 sqllib/function 目錄中。

  注意:

  注意:構建步驟中需要導出文件 .def(Windows 上)或 .exp(UNIX 上)。

  注冊例程

  一旦構建了例程,就要在數據庫中注冊它們。清單 8 展示了為在數據庫中注冊這些例程而創建的腳本的內容。請注意,字符‘@’在此用作語句結束符:

  清單8. 用於在數據庫中注冊例程的腳本


  DROP SPECIFIC PROCEDURE truncate_table@
  CREATE PROCEDURE truncate ( IN schemaName VARCHAR(130), IN tableName VARCHAR(130) )
  SPECIFIC truncate_table
  DYNAMIC RESULT SETS 0
  MODIFIES SQL DATA
  NOT DETERMINISTIC
  CALLED ON NULL INPUT
  LANGUAGE C
  EXTERNAL NAME 'functions!truncate_table'
  FENCED THREADSAFE
  INHERIT SPECIAL REGISTERS
  PARAMETER STYLE SQL

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved