2007年4月27日星期五

CLSQL 簡介(1) - SELECT

Common Lisp 套件中最常用的 SQL 套件就是 CLSQL,
這邊先簡介一下它的用法 ^^

首先, 先用 asdf 載入 ( asdf 另外擇日介紹 @@ )
(asdf:oos 'asdf:load-op :clsql)

資料庫的第一步是連線
(clsql:connect '("database" "username" "password") :database-type :oracle)
這邊是連到 database 指定 username/password ( 這邊連線參數依不同資料庫會不同 )
後面指定 database-type, 因為每個 database 會略有不同, 所以還是指定一下較好

接下來就直接下 query 的 SQL SELECT 了
(clsql:query "SELECT * FROM FTP_CONFIG WHERE PGID = '1_ppbt0w'")
這邊不用特別指定連線是因為我們只有一個資料庫連線, 它會設為 default
使用 query 可以和一般 SQL 一樣的內容

(clsql:query (format nil "SELECT * FROM FTP_CONFIG WHERE PGID = '~a'" "1_ppbt0w"))
如果要指定參數的話, 使用 format 來設定 ( format 另外擇日介紹 )
其中 ~a 表示一般你沒特別要求就用這個, 算是汎用的表示法, 會抓後面的值
所以後面要給變數值也可以...

不過這樣用字串好像沒發揮到 Lisp 的特色, 底下有一種類似 Lisp 語法的表示法,
不過要使用之前要先開啟 SQL Reader Macro, 方法如下 :
(clsql:locally-enable-sql-reader-syntax)

開啟之後就可以使用 [ ] 表示 SQL 中的關鍵字

(clsql:query [select [*] :from [FTP_CONFIG] :where [= [PGID] "1_ppbt0w"]])
這樣寫就比較接近 Lisp 了...

0 意見: