亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

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

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

這些命令在后續的頁面里將繼續深入描述. 
pg_lo* 過程都是與 Postgres 大對象特性交互的接口.這些函數是仿照標準 Unix 文件系統接口的做法設計的.pg_lo* 過程應該用于一個 BEGIN/END 事務塊里頭,因為 pg_lo_open 返回的文件描述符只是在當前事務中有效.pg_lo_import 和 pg_lo_export 必須在一個 BEGIN/END 事務塊里面使用.


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

例子
這是一個如何使用這些過程的一個小例子: 
# 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 ― 打開一個到后端服務器的聯接 

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

輸入 (舊風格)
dbName 
聲明一個有效數據庫名. 
[-host hostName] 
聲明數據庫 dbName 所在后端服務器的名稱. 
[-port portNumber] 
聲明數據庫 dbName 所在后端服務器的 IP 端口號. 
[-tty pqtty] 
聲明后端來的調試輸出的可選文件或者控制臺(tty). 
[-options optionalBackendArgs] 
聲明數據庫 dbName 所在后端服務器的選項. 

輸出
dbHandle 
成功時,返回一個數據庫聯接的句柄.句柄以前綴 "pgsql" 開頭. 

描述
pg_connect 打開一個與 Postgres 后端的聯接. 
兩種語法都可用.舊風格里面每個可能的選項都在 pg_connect 語句里用一個選項開關分隔.在新風格里,可以用一個選項字符串包含多個選項值.參閱 pg_conndefaults 獲取關于新風格的可用的選項信息.

用法
XXX thomas 1997-12-24

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

pg_disconnect
名稱
pg_disconnect ― 關閉一個與后端服務器的聯接 

語法
pg_disconnect dbHandle
Inputs
dbHandle 
聲明一個有效的數據庫句柄. 

輸出
無 
描述
pg_disconnect 關閉一個與后端 Postgres 服務器的聯接.

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

pg_conndefaults
名稱
pg_conndefaults ― 獲取關于缺省聯接參數的信息 

語法
pg_conndefaults
輸入
無. 

輸出
option list 
結果是一個描述可能的聯接選項和它們的當前值的列表.列表中每個元素是一個下面格式的子列表: 
  
  

{optname label dispchar dispsize value}

這里 optname 可以用為 pg_connect -conninfo 里的選項. 

描述
pg_conndefaults 返回關于聯接的在 pg_connect -conninfo 里可用的聯接選項的信息和當前每個選項的缺省值.
用法
pg_conndefaults

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

pg_exec
名稱
pg_exec ― 向后端發送一個查詢字串 

語法
pg_exec dbHandle queryString
輸入
dbHandle 
聲明一個有效的數據庫句柄. 
queryString 
聲明一個有效的 SQL 查詢. 

輸出
resultHandle 
如果 Pgtcl 不能獲得后端返回,將返回一個 Tcl 錯誤.否則,一個查詢對象將被創建并且返回一個該對象的句柄.這個句柄可以傳遞給 pg_result 獲取查詢的結果. 
描述
pg_exec 向 Postgres 后端提交一個查詢并且返回一個結果.查詢結果句柄以聯接句柄開頭并且增加了一個句號和一個結果數量. 
注意沒有 Tcl 錯誤生成并不意味著查詢成功!一個后端返回的錯誤信息將被當作帶有失敗狀態的查詢結果進行處理,而不是在 pg_exec 里生成一個 Tcl 錯誤.


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

pg_result
名稱
pg_result ― 獲取查詢結果的信息 

語法
pg_result resultHandle resultOption
輸入
resultHandle 
查詢結果的句柄. 
resultOption 
聲明幾個可能選項之一. 

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

輸出
由選定的選項決定的結果,如上所述. 

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


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

pg_select
名稱
pg_select ― 逐一處理一個 SELECT 語句的結果 

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

輸出
resultHandle 
返回的結果要么是一個錯誤信息要么是一個查詢結果的句柄. 

描述
pg_select 向 Postgres 后端提交一個 SELECT 查詢,并且對結果里的每個記錄執行一個給定的代碼段.queryString 必須是一個 SELECT 語句.任何其它東西都返回一個錯誤.arrayVar 變量是一個在循環中使用的數組名.對每個記錄,arrayVar 都被填充為記錄的字段值,使用字段名作為數組的索引.然后執行 queryProcedure?。?
用法
如果表 "table" 有字段 "control" 和 "name"?。ㄒ约翱赡苓€有其他字段)下面的東西就能工作: 
        pg_select $pgconn "SELECT * from table" array {
                puts [format "%5d %s" array(control) array(name)]
        }

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

pg_listen
名稱
pg_listen ― 設置或者改變一個偵聽異步 NOTIFY 消息的回調(函數) 

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

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

你在使用 pg_listen 時不應該直接調用 SQL 語句 LISTEN 或 UNLISTEN.Pgtcl 替你使用那些語句.但是如果你想自己發送一個 NOTIFY 消息,用 pg_exec 調用 SQL NOTIFY 語句.


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

pg_lo_creat
名稱
pg_lo_creat ― 創建一個大對象 

語法
pg_lo_creat conn mode
輸入
conn 
聲明一個有效的數據庫聯接. 
mode 
聲明大對象的訪問模式 

輸出
objOid 
創建的大對象的 oid (對象標識). 

描述
pg_lo_creat 創建一個倒轉大對象(Inversion Large Object?。?

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

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

pg_lo_open
名稱
pg_lo_open ― 打開一個大對象 

語法
pg_lo_open conn objOid mode
輸入
conn 
聲明一個有效的數據庫聯接. 
objOid 
聲明一個有效的大對象 oid (對象標識). 
mode 
聲明大對象的訪問模式 

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

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

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

pg_lo_close
名稱
pg_lo_close ― 關閉一個大對象 

語法
pg_lo_close conn fd
輸入
conn 
聲明一個有效的數據庫聯接. 
fd 
一個可以用于后面 pg_lo* 過程的文件描述符. 

輸出
無 

描述
pg_lo_close 關閉一個倒轉大對象.
用法

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

pg_lo_read
名稱
pg_lo_read ― 讀取一個大對象 

語法
pg_lo_read conn fd bufVar len
輸入
conn 
聲明一個有效的數據庫聯接. 
fd 
從 pg_lo_open 來的大對象的文件描述符. 
bufVar 
聲明一個有效的緩沖區變量用以包含大對象數據段. 
len 
聲明大對象數據段允許的最大尺寸. 

輸出
無 

描述
pg_lo_read 從一個大對象讀取最多 len 字節到名為 bufVar 的變量中. 

用法
bufVar 必須是一個有效的變量名.

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

pg_lo_write
名稱
pg_lo_write ― 寫入一個大對象 

語法
pg_lo_write conn fd buf len
輸入
conn 
聲明一個有效的數據庫聯接. 
fd 
從 pg_lo_open 來的大對象的文件描述符. 
buf 
聲明一個有效的字符串變量用于寫入大對象. 
len 
聲明要寫入的字符串的最大尺寸. 

輸出
無 

描述
pg_lo_write 從一個變量 buf 向一個大對象寫入至多 len 字節. 

用法
buf 必須是實際要寫的字符串,而不是一個變量名.

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

pg_lo_lseek
名稱
pg_lo_lseek ― 在一個大對象里定位到某個位置 

語法
pg_lo_lseek conn fd offset whence
輸入
conn 
聲明一個有效的數據庫聯接. 
fd 
從 pg_lo_open 來的大對象的文件描述符. 
offset 
聲明一個以零為基的字節數偏移量. 
whence 
起點(whence)可以是 "SEEK_CUR","SEEK_END",或 "SEEK_SET" 

輸出
無 

描述
pg_lo_lseek 把當前(文件)指針放到大對象開始偏移 offset 字節處.
用法
whence?。ㄆ瘘c)可以是 "SEEK_CUR","SEEK_END",或 "SEEK_SET".

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

pg_lo_tell
名稱
pg_lo_tell ― 返回一個大對象的當前(文件)指針位置 

語法
pg_lo_tell conn fd
輸入
conn 
聲明一個有效的數據庫聯接. 
fd 
從 pg_lo_open 來的大對象的文件描述符. 

輸出
offset 
一個零為基的字節數偏移量,可以用于 pg_lo_lseek 輸入. 

描述
pg_lo_tell 返回以字節計的當前指針相對大對象起點的偏移 offset?。?

用法

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

pg_lo_unlink
名稱
pg_lo_unlink ― 刪除一個大對象 

語法
pg_lo_unlink conn lobjId
輸入
conn 
聲明一個有效的數據庫聯接. 
lobjId 
大對象的標識.XXX 是否與其他調用里的 objOid (對象標識)一樣呢?? - thomas 1998-01-11 

輸出
無 

描述
pg_lo_unlink 刪除聲明的大對象. 

用法

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

pg_lo_import
名稱
pg_lo_import ― 從一個 Unix 文件輸入一個大對象 

語法
pg_lo_import conn filename
輸入
conn 
聲明一個有效的數據庫聯接. 
filename 
Unix 文件名. 

輸出
無 XXX 這里是否返回一個 lobjId? 是否與其他調用里的 objOid?。▽ο髽俗R)一樣呢? thomas - 1998-01-11 

描述
pg_lo_import 讀取聲明的文件并且把其內容放到一個大對象中. 

用法
pg_lo_import 必須在一對 BEGIN/END 事務塊中調用.

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

pg_lo_export
名稱
pg_lo_export ― 把一個大對象輸出到一個 Unix 文件中去. 

語法
pg_lo_export conn lobjId filename
輸入
conn 
聲明一個有效的數據庫聯接. 
lobjId 
大對象標識.XXX 是否與其他調用里的 objOid(對象標識)一樣呢?? thomas - 1998-01-11 
filename 
Unix 文件名. 

輸出
無 XXX 這里是否返回一個 lobjId?是否與其他調用里的 objOid?。▽ο髽俗R)一樣呢?thomas - 1998-01-11 

描述
pg_lo_export 把聲明的大對象寫入到一個 Unix 文件中去. 

用法
pg_lo_export 必須在一對 BEGIN/END 事務塊中調用. 

--------------------------------------------------------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人免费网| 亚洲影院色无极综合| 最近中文字幕mv在线一区二区三区四区| 欧美另类99xxxxx| 亚洲精品suv精品一区二区| 91精品视频播放| 国产噜噜噜噜噜久久久久久久久| 国产精品美女www| 欧美性猛交xxxx乱大交蜜桃| 国产精品国产三级国产aⅴ9色| 欧美日韩综合视频| 欧美午夜视频一区二区| 国产精品美女主播在线观看纯欲| 日韩精品在线看| 欧美丰满少妇xxxx| 亚洲国产精品中文| 国产精品www色诱视频| 秋霞成人午夜鲁丝一区二区三区| 91精品视频免费| 国产91精品不卡视频| 欧美成人激情图片网| 国产精品成人av性教育| 精品久久久国产| 日韩中文字幕免费视频| 久久影视三级福利片| 91色在线视频| 成人有码在线播放| 久久综合久久88| 亚洲欧美精品suv| 亚洲国产成人精品女人久久久| 亚洲性线免费观看视频成熟| 中文字幕欧美国内| 亚洲欧洲在线视频| 欧美自拍视频在线观看| 91成人免费观看网站| 欧美国产日韩xxxxx| 久久精品一本久久99精品| 欧美日韩成人在线视频| 国产精品揄拍500视频| 成人激情免费在线| 亚洲性线免费观看视频成熟| 日韩av三级在线观看| 亚洲福利视频二区| 国产精品爽黄69| 日韩小视频在线| 黑人欧美xxxx| 亚洲欧美日韩精品久久奇米色影视| 日韩av免费在线观看| 91久热免费在线视频| 亚洲精品在线视频| 日韩av成人在线观看| 国产成人精品在线视频| 亚洲精品97久久| 日韩在线小视频| 国产成人精品久久| 亚洲精品av在线| 成人av在线亚洲| 欧美久久久精品| 亚洲欧美日韩另类| 国产在线拍偷自揄拍精品| 日本一区二区在线播放| 91丝袜美腿美女视频网站| 在线成人激情视频| 成人97在线观看视频| 欧美疯狂xxxx大交乱88av| 欧美性猛交xxxx黑人猛交| 日韩国产欧美精品一区二区三区| 91精品久久久久久久久久久久久| 国产极品精品在线观看| 日韩视频在线免费| 亚洲剧情一区二区| 国产精品免费久久久| 在线丨暗呦小u女国产精品| 国产99久久精品一区二区永久免费| 久久久精品美女| 日韩小视频在线观看| 日韩av电影免费观看高清| 黑人巨大精品欧美一区免费视频| 中文字幕日韩欧美| 国产精品福利在线观看| 日韩精品免费在线播放| 一区二区三区四区在线观看视频| 日韩欧美在线免费| 亚洲综合日韩中文字幕v在线| 伊人久久免费视频| 福利一区视频在线观看| 成人免费视频97| 中日韩美女免费视频网站在线观看| 这里只有精品久久| 久久久久久亚洲| 国产精品jizz在线观看麻豆| 亚洲欧美在线第一页| 久久在线精品视频| 黑人欧美xxxx| 2019av中文字幕| 深夜福利国产精品| 亚洲视频网站在线观看| 亚洲女同精品视频| 青青草原成人在线视频| 欧洲日本亚洲国产区| 国产精品视频精品视频| 性金发美女69hd大尺寸| 欧美性视频精品| 久久成人综合视频| 亚洲日本成人女熟在线观看| 久久精品国产视频| 97超碰国产精品女人人人爽| 亚洲女性裸体视频| 亚洲欧美激情精品一区二区| 午夜精品99久久免费| 亚洲图中文字幕| 欧美一级大片在线免费观看| 亲子乱一区二区三区电影| 奇米4444一区二区三区| 欧美日韩免费网站| 国内精品免费午夜毛片| 亚洲视频axxx| 亚洲老板91色精品久久| 亚洲男人天堂久| 国产日韩精品一区二区| 午夜精品一区二区三区在线播放| 亚洲人成毛片在线播放| 成人在线视频网| 亚洲国产精品悠悠久久琪琪| 2019亚洲日韩新视频| 91中文字幕在线观看| 国产欧美最新羞羞视频在线观看| 国产精品美女免费看| 久久精品久久精品亚洲人| 欧美尺度大的性做爰视频| 日韩欧美中文免费| 国产精品久久久久久久av大片| 亚洲深夜福利在线| 一区三区二区视频| 欧美影院在线播放| 日韩美女视频在线观看| 日韩h在线观看| 国产精品一区二区久久久久| 欧美日韩亚洲视频| 成人午夜黄色影院| 亚洲午夜精品久久久久久久久久久久| 亚洲国产精品99久久| 一本大道香蕉久在线播放29| 成人黄色免费网站在线观看| 国产精品自拍小视频| 国产精品日韩精品| 久久久伊人日本| 欧美成人一区二区三区电影| 精品国产一区二区三区久久狼黑人| 97在线视频免费观看| 亚洲第五色综合网| 精品亚洲一区二区三区在线播放| 久久精品影视伊人网| 日韩一中文字幕| 在线观看国产精品91| 日韩激情视频在线播放| 亚洲精品午夜精品| 国产精品视频永久免费播放| 日韩视频在线一区| 欧美视频在线观看免费网址| 国产精品视频导航| 91免费高清视频| 中文字幕av一区二区三区谷原希美| 在线视频亚洲欧美|