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

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-接口-55. pgtcl - TCL 綁定庫

2019-09-08 23:34:12
字體:
供稿:網(wǎng)友
第五十五章. pgtcl - TCL 綁定庫
內(nèi)容 
命令 
例子 
pgtcl 命令參考信息 
pgtcl 是一個(gè)用于前端和 Postgres 后端交互的 tcl 包.它把大多數(shù) libpq 庫的函數(shù)/功能做成可用于 tcl 腳本. 
  
這個(gè)包最初是 Jolly Chen 寫的. 
命令
表 55-1. pgtcl 命令 
   
 
 命令 描述 
pg_connect 打開一個(gè)與后端服務(wù)器的聯(lián)接 
pg_disconnect 關(guān)閉一個(gè)聯(lián)接 
pg_conndefaults 獲取聯(lián)接選項(xiàng)和其他缺省值 
pg_exec 向后端發(fā)送一個(gè)查詢 
pg_result 操作查詢的結(jié)果 
pg_select 在一個(gè) SELECT 語句的結(jié)果上循環(huán)(處理) 
pg_listen 建立一個(gè)用于 NOTIFY 消息的回叫 
pg_lo_creat 創(chuàng)建一個(gè)大對(duì)象 
pg_lo_open 打開一個(gè)大對(duì)象 
pg_lo_close 關(guān)閉一個(gè)大對(duì)象 
pg_lo_read 讀取一個(gè)大對(duì)象 
pg_lo_write 寫一個(gè)大對(duì)象 
pg_lo_lseek 在一個(gè)大對(duì)象里搜索一個(gè)位置 
pg_lo_tell 返回一個(gè)大對(duì)象的當(dāng)前搜索位置 
pg_lo_unlink 刪除一個(gè)大對(duì)象 
pg_lo_import 把一個(gè) Unix 輸入到一個(gè)大對(duì)象里 
pg_lo_export 把一個(gè)大對(duì)象輸出到一個(gè) Unix 文件里 

這些命令在后續(xù)的頁面里將繼續(xù)深入描述. 
pg_lo* 過程都是與 Postgres 大對(duì)象特性交互的接口.這些函數(shù)是仿照標(biāo)準(zhǔn) Unix 文件系統(tǒng)接口的做法設(shè)計(jì)的.pg_lo* 過程應(yīng)該用于一個(gè) BEGIN/END 事務(wù)塊里頭,因?yàn)椤g_lo_open 返回的文件描述符只是在當(dāng)前事務(wù)中有效.pg_lo_import 和 pg_lo_export 必須在一個(gè) BEGIN/END 事務(wù)塊里面使用.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

例子
這是一個(gè)如何使用這些過程的一個(gè)小例子: 
# getDBs :
#   get the names of all the databases at a given host and port number
#   with the defaults being the localhost and port 5432
#   return them in alphabetical order
proc getDBs { {host "localhost"} {port "5432"} } {
    # datnames is the list to be result
    set conn [pg_connect template1 -host $host -port $port]
    set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"]
    set ntups [pg_result $res -numTuples]
    for {set i 0} {$i < $ntups} {incr i} {
        lappend datnames [pg_result $res -getTuple $i]
    }
    pg_result $res -clear
    pg_disconnect $conn
    return $datnames
}

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pgtcl 命令參考信息

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_connect
名稱
pg_connect ― 打開一個(gè)到后端服務(wù)器的聯(lián)接 

語法
pg_connect -conninfo connectOptions
pg_connect dbName [-host hostName]
  [-port portNumber] [-tty pqtty]
  [-options optionalBackendArgs]
輸入 (新風(fēng)格)
connectOptions 
一個(gè)聯(lián)接選項(xiàng)字符串,每個(gè)(選項(xiàng))都以形式 keyword = value 書寫. 

輸入 (舊風(fēng)格)
dbName 
聲明一個(gè)有效數(shù)據(jù)庫名. 
[-host hostName] 
聲明數(shù)據(jù)庫 dbName 所在后端服務(wù)器的名稱. 
[-port portNumber] 
聲明數(shù)據(jù)庫 dbName 所在后端服務(wù)器的 IP 端口號(hào). 
[-tty pqtty] 
聲明后端來的調(diào)試輸出的可選文件或者控制臺(tái)(tty). 
[-options optionalBackendArgs] 
聲明數(shù)據(jù)庫 dbName 所在后端服務(wù)器的選項(xiàng). 

輸出
dbHandle 
成功時(shí),返回一個(gè)數(shù)據(jù)庫聯(lián)接的句柄.句柄以前綴 "pgsql" 開頭. 

描述
pg_connect 打開一個(gè)與 Postgres 后端的聯(lián)接. 
兩種語法都可用.舊風(fēng)格里面每個(gè)可能的選項(xiàng)都在 pg_connect 語句里用一個(gè)選項(xiàng)開關(guān)分隔.在新風(fēng)格里,可以用一個(gè)選項(xiàng)字符串包含多個(gè)選項(xiàng)值.參閱 pg_conndefaults 獲取關(guān)于新風(fēng)格的可用的選項(xiàng)信息.

用法
XXX thomas 1997-12-24

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_disconnect
名稱
pg_disconnect ― 關(guān)閉一個(gè)與后端服務(wù)器的聯(lián)接 

語法
pg_disconnect dbHandle
Inputs
dbHandle 
聲明一個(gè)有效的數(shù)據(jù)庫句柄. 

輸出
無 
描述
pg_disconnect 關(guān)閉一個(gè)與后端 Postgres 服務(wù)器的聯(lián)接.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_conndefaults
名稱
pg_conndefaults ― 獲取關(guān)于缺省聯(lián)接參數(shù)的信息 

語法
pg_conndefaults
輸入
無. 

輸出
option list 
結(jié)果是一個(gè)描述可能的聯(lián)接選項(xiàng)和它們的當(dāng)前值的列表.列表中每個(gè)元素是一個(gè)下面格式的子列表: 
  
  

{optname label dispchar dispsize value}

這里 optname 可以用為 pg_connect -conninfo 里的選項(xiàng). 

描述
pg_conndefaults 返回關(guān)于聯(lián)接的在 pg_connect -conninfo 里可用的聯(lián)接選項(xiàng)的信息和當(dāng)前每個(gè)選項(xiàng)的缺省值.
用法
pg_conndefaults

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_exec
名稱
pg_exec ― 向后端發(fā)送一個(gè)查詢字串 

語法
pg_exec dbHandle queryString
輸入
dbHandle 
聲明一個(gè)有效的數(shù)據(jù)庫句柄. 
queryString 
聲明一個(gè)有效的 SQL 查詢. 

輸出
resultHandle 
如果 Pgtcl 不能獲得后端返回,將返回一個(gè) Tcl 錯(cuò)誤.否則,一個(gè)查詢對(duì)象將被創(chuàng)建并且返回一個(gè)該對(duì)象的句柄.這個(gè)句柄可以傳遞給 pg_result 獲取查詢的結(jié)果. 
描述
pg_exec 向 Postgres 后端提交一個(gè)查詢并且返回一個(gè)結(jié)果.查詢結(jié)果句柄以聯(lián)接句柄開頭并且增加了一個(gè)句號(hào)和一個(gè)結(jié)果數(shù)量. 
注意沒有 Tcl 錯(cuò)誤生成并不意味著查詢成功!一個(gè)后端返回的錯(cuò)誤信息將被當(dāng)作帶有失敗狀態(tài)的查詢結(jié)果進(jìn)行處理,而不是在 pg_exec 里生成一個(gè) Tcl 錯(cuò)誤.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_result
名稱
pg_result ― 獲取查詢結(jié)果的信息 

語法
pg_result resultHandle resultOption
輸入
resultHandle 
查詢結(jié)果的句柄. 
resultOption 
聲明幾個(gè)可能選項(xiàng)之一. 

選項(xiàng)
-status 
結(jié)果的狀態(tài). 
-error 
如果狀態(tài)標(biāo)識(shí)錯(cuò)誤時(shí)是錯(cuò)誤信息;否則是一個(gè)空字符串. 
-conn 
生成結(jié)果的聯(lián)接. 
-oid 
如果命令是一個(gè) INSERT,這里是插入的記錄的 OID;否則是一個(gè)空字符串. 
-numTuples 
查詢返回的記錄個(gè)數(shù). 
-numAttrs 
每條記錄的字段數(shù)目. 
-list VarName 
把結(jié)果賦與一個(gè)列表. 
-assign arrayName 
把結(jié)果賦予一個(gè)數(shù)組,使用預(yù)定的形式(tupno,attributeName). 
-assignbyidx arrayName ?appendstr? 
把結(jié)果賦予一個(gè)數(shù)組,用第一個(gè)字段的值和其余字段的名稱為鍵字.如果給出了 appendstr 那么附加到每個(gè)鍵字上.簡而言之,除了第一個(gè)字段外每個(gè)記錄都存放到數(shù)組里,使用預(yù)定的形式(firstFieldValue,fieldNameAppendStr). 
-getTuple tupleNumber 
返回列表里指定的記錄的各個(gè)域.記錄數(shù)從零開始. 
-tupleArray tupleNumber arrayName 
以字段名為索引向數(shù)組 arrayName 里存儲(chǔ)記錄字段,記錄數(shù)從零開始. 
-attributes 
返回一個(gè)記錄字段的名稱的列表. 
-lAttributes 
返回一個(gè)子列表的列表,{name ftype fsize} 用于每條記錄字段. 
-clear 
清理查詢對(duì)象結(jié)果. 

輸出
由選定的選項(xiàng)決定的結(jié)果,如上所述. 

描述
pg_result 返回前面的一個(gè) pg_exec 創(chuàng)建的查詢結(jié)果的信息. 
你可以保留查詢結(jié)果任意長的時(shí)間,但是在你對(duì)其處理完畢之后,一定要通過執(zhí)行 pg_result -clear 來釋放它們.否則,你就有一處內(nèi)存泄露,而且 Pgtcl 最終將開始抱怨你創(chuàng)建了太多的查詢結(jié)果對(duì)象.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_select
名稱
pg_select ― 逐一處理一個(gè) SELECT 語句的結(jié)果 

語法
pg_select dbHandle queryString
  arrayVar queryProcedure
輸入
dbHandle 
聲明一個(gè)有效的數(shù)據(jù)庫句柄. 
queryString 
聲明一個(gè)有效的 SQL 選擇查詢. 
arrayVar 
用于存放返回記錄的數(shù)組變量. 
queryProcedure 
在每個(gè)找到的記錄上運(yùn)行的過程. 

輸出
resultHandle 
返回的結(jié)果要么是一個(gè)錯(cuò)誤信息要么是一個(gè)查詢結(jié)果的句柄. 

描述
pg_select 向 Postgres 后端提交一個(gè) SELECT 查詢,并且對(duì)結(jié)果里的每個(gè)記錄執(zhí)行一個(gè)給定的代碼段.queryString 必須是一個(gè) SELECT 語句.任何其它東西都返回一個(gè)錯(cuò)誤.a(chǎn)rrayVar 變量是一個(gè)在循環(huán)中使用的數(shù)組名.對(duì)每個(gè)記錄,arrayVar 都被填充為記錄的字段值,使用字段名作為數(shù)組的索引.然后執(zhí)行 queryProcedure . 
用法
如果表 "table" 有字段 "control" 和 "name" (以及可能還有其他字段)下面的東西就能工作: 
        pg_select $pgconn "SELECT * from table" array {
                puts [format "%5d %s" array(control) array(name)]
        }

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_listen
名稱
pg_listen ― 設(shè)置或者改變一個(gè)偵聽異步 NOTIFY 消息的回調(diào)(函數(shù)) 

語法
pg_listen dbHandle notifyName callbackCommand
輸入
dbHandle 
聲明一個(gè)有效的數(shù)據(jù)庫句柄. 
notifyName 
聲明啟停偵聽(動(dòng)作)的通知條件名稱. 
callbackCommand 
如果存在且非空,提供一個(gè)在匹配的通知到達(dá)時(shí)執(zhí)行的命令字符串. 

輸出
無 
 
描述
pg_listen 創(chuàng)建,修改或取消一個(gè)對(duì)來自 Postgres 后端的異步 NOTIFY 消息請求的偵聽.帶有 callbackCommand 參數(shù)時(shí),建立請求或者已經(jīng)存在的命令字串被代替.不帶 callbackCommand 參數(shù)時(shí),取消前面一個(gè)請求. 
在一個(gè) pg_listen 請求建立起來后,當(dāng)一個(gè)與給定名稱匹配的 NOTIFY 消息從后端到達(dá)后就執(zhí)行聲明的命令字串.當(dāng)任何Postgres 客戶應(yīng)用發(fā)送一個(gè)引用該名稱的 NOTIFY 消息后都會(huì)發(fā)生這個(gè)過程.(注意這個(gè)名字可以是,但又不必須是一個(gè)數(shù)據(jù)庫里現(xiàn)存的關(guān)系.)命令行字串是從 Tcl 空閑循環(huán)運(yùn)行的.那也是用 Tk 寫的應(yīng)用的正常的空閑狀態(tài).在非 Tk 的 Tcl 腳本里,你可以執(zhí)行 update 或 vwait 來導(dǎo)致進(jìn)入空閑循環(huán). 

你在使用 pg_listen 時(shí)不應(yīng)該直接調(diào)用 SQL 語句 LISTEN 或 UNLISTEN.Pgtcl 替你使用那些語句.但是如果你想自己發(fā)送一個(gè) NOTIFY 消息,用 pg_exec 調(diào)用 SQL NOTIFY 語句.


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_creat
名稱
pg_lo_creat ― 創(chuàng)建一個(gè)大對(duì)象 

語法
pg_lo_creat conn mode
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
mode 
聲明大對(duì)象的訪問模式 

輸出
objOid 
創(chuàng)建的大對(duì)象的 oid (對(duì)象標(biāo)識(shí)). 

描述
pg_lo_creat 創(chuàng)建一個(gè)倒轉(zhuǎn)大對(duì)象(Inversion Large Object ) 

用法
模式可以是任意 INV_READ,INV_WRITE,和 INV_ARCHIVE 的或(OR).或(OR)運(yùn)算的分隔符是 "|". 
[pg_lo_creat $conn "INV_READ|INV_WRITE"]

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_open
名稱
pg_lo_open ― 打開一個(gè)大對(duì)象 

語法
pg_lo_open conn objOid mode
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
objOid 
聲明一個(gè)有效的大對(duì)象 oid (對(duì)象標(biāo)識(shí)). 
mode 
聲明大對(duì)象的訪問模式 

輸出
fd 
一個(gè)可以用于后面 pg_lo* 過程的文件描述符. 

描述
pg_lo_open 打開一個(gè)轉(zhuǎn)置大對(duì)象(Inversion Large Object).
用法
模式可以是 "r","w",或 "rw".

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_close
名稱
pg_lo_close ― 關(guān)閉一個(gè)大對(duì)象 

語法
pg_lo_close conn fd
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
fd 
一個(gè)可以用于后面 pg_lo* 過程的文件描述符. 

輸出
無 

描述
pg_lo_close 關(guān)閉一個(gè)倒轉(zhuǎn)大對(duì)象.
用法

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_read
名稱
pg_lo_read ― 讀取一個(gè)大對(duì)象 

語法
pg_lo_read conn fd bufVar len
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
fd 
從 pg_lo_open 來的大對(duì)象的文件描述符. 
bufVar 
聲明一個(gè)有效的緩沖區(qū)變量用以包含大對(duì)象數(shù)據(jù)段. 
len 
聲明大對(duì)象數(shù)據(jù)段允許的最大尺寸. 

輸出
無 

描述
pg_lo_read 從一個(gè)大對(duì)象讀取最多 len 字節(jié)到名為 bufVar 的變量中. 

用法
bufVar 必須是一個(gè)有效的變量名.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_write
名稱
pg_lo_write ― 寫入一個(gè)大對(duì)象 

語法
pg_lo_write conn fd buf len
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
fd 
從 pg_lo_open 來的大對(duì)象的文件描述符. 
buf 
聲明一個(gè)有效的字符串變量用于寫入大對(duì)象. 
len 
聲明要寫入的字符串的最大尺寸. 

輸出
無 

描述
pg_lo_write 從一個(gè)變量 buf 向一個(gè)大對(duì)象寫入至多 len 字節(jié). 

用法
buf 必須是實(shí)際要寫的字符串,而不是一個(gè)變量名.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_lseek
名稱
pg_lo_lseek ― 在一個(gè)大對(duì)象里定位到某個(gè)位置 

語法
pg_lo_lseek conn fd offset whence
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
fd 
從 pg_lo_open 來的大對(duì)象的文件描述符. 
offset 
聲明一個(gè)以零為基的字節(jié)數(shù)偏移量. 
whence 
起點(diǎn)(whence)可以是 "SEEK_CUR","SEEK_END",或 "SEEK_SET" 

輸出
無 

描述
pg_lo_lseek 把當(dāng)前(文件)指針放到大對(duì)象開始偏移 offset 字節(jié)處.
用法
whence (起點(diǎn))可以是 "SEEK_CUR","SEEK_END",或 "SEEK_SET".

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_tell
名稱
pg_lo_tell ― 返回一個(gè)大對(duì)象的當(dāng)前(文件)指針位置 

語法
pg_lo_tell conn fd
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
fd 
從 pg_lo_open 來的大對(duì)象的文件描述符. 

輸出
offset 
一個(gè)零為基的字節(jié)數(shù)偏移量,可以用于 pg_lo_lseek 輸入. 

描述
pg_lo_tell 返回以字節(jié)計(jì)的當(dāng)前指針相對(duì)大對(duì)象起點(diǎn)的偏移 offset . 

用法

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_unlink
名稱
pg_lo_unlink ― 刪除一個(gè)大對(duì)象 

語法
pg_lo_unlink conn lobjId
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
lobjId 
大對(duì)象的標(biāo)識(shí).XXX 是否與其他調(diào)用里的 objOid (對(duì)象標(biāo)識(shí))一樣呢?? - thomas 1998-01-11 

輸出
無 

描述
pg_lo_unlink 刪除聲明的大對(duì)象. 

用法

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_import
名稱
pg_lo_import ― 從一個(gè) Unix 文件輸入一個(gè)大對(duì)象 

語法
pg_lo_import conn filename
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
filename 
Unix 文件名. 

輸出
無 XXX 這里是否返回一個(gè) lobjId? 是否與其他調(diào)用里的 objOid (對(duì)象標(biāo)識(shí))一樣呢? thomas - 1998-01-11 

描述
pg_lo_import 讀取聲明的文件并且把其內(nèi)容放到一個(gè)大對(duì)象中. 

用法
pg_lo_import 必須在一對(duì) BEGIN/END 事務(wù)塊中調(diào)用.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

pg_lo_export
名稱
pg_lo_export ― 把一個(gè)大對(duì)象輸出到一個(gè) Unix 文件中去. 

語法
pg_lo_export conn lobjId filename
輸入
conn 
聲明一個(gè)有效的數(shù)據(jù)庫聯(lián)接. 
lobjId 
大對(duì)象標(biāo)識(shí).XXX 是否與其他調(diào)用里的 objOid(對(duì)象標(biāo)識(shí))一樣呢?? thomas - 1998-01-11 
filename 
Unix 文件名. 

輸出
無 XXX 這里是否返回一個(gè) lobjId?是否與其他調(diào)用里的 objOid (對(duì)象標(biāo)識(shí))一樣呢?thomas - 1998-01-11 

描述
pg_lo_export 把聲明的大對(duì)象寫入到一個(gè) Unix 文件中去. 

用法
pg_lo_export 必須在一對(duì) BEGIN/END 事務(wù)塊中調(diào)用. 

--------------------------------------------------------------------------------
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 信宜市| 尼玛县| 新泰市| 兴义市| 武冈市| 海城市| 枞阳县| 保德县| 白玉县| 龙泉市| 会昌县| 开封市| 汉中市| 新源县| 阿拉善右旗| 四川省| 勐海县| 古丈县| 孟津县| 玉环县| 甘孜县| 雷山县| 南雄市| 临泉县| 民乐县| 老河口市| 新蔡县| 丰台区| 武陟县| 呈贡县| 安国市| 阳高县| 邹平县| 石河子市| 全州县| 恩平市| 留坝县| 西盟| 松江区| 黄平县| 额敏县|