麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-20. 應用 - ecpg

2019-09-08 23:33:32
字體:
來源:轉載
供稿:網友
ecpg
名稱
ecpg ― 嵌入的 SQL C 預處理器 

語法
ecpg [ -v ] [ -t ] [ -I include-path ] [ -o outfile ]  file1 [ file2 ] [ ... ]
輸入
ecpg 接受下面命令行參數: 
-v 
打印版本信息. 
-t 
關閉自動事務模式. 
-I path 
聲明一個附加的包含路徑.缺省是 ., /usr/local/include,Postgres 包含路徑是在編譯時定義的(缺省:/usr/local/pgsql/lib)和 /usr/include. 
-o 
聲明 ecpg 應該把它的所有輸出寫到輸出文件里.如果沒有給出這個選項,則寫到 name.c,假設輸入文件是 name.pgc.如果輸入文件有預期的 .pgc 后綴,那么輸出文件將在輸入文件后附加 .pgc (?不是吧?). 
file 
要處理的文件. 
輸出
ecpg將創建一個文件或者寫到標準輸出(stdout). 
return value 
  
  
  
  

成功完成后,ecpg 給 shell 返回一個 0,如果出錯返回 -1.

描述
ecpg 是一個嵌入的用于Postgres 和 C 語言的 SQL 預編譯器.她使得用嵌入的 SQL 代碼書寫 C 程序成為可能. 
Linus Tolke (又叫 Linus :)是 ecpg 最初的作者(直到版本 0.2).Michael Meskes 是目前的 ecpg 的維護人員和作者.Thomas Good 是 ecpg 手冊頁最新版本的作者,這個手冊頁也是這份文檔的基礎.

用法
為編譯預編譯
一個嵌入的 SQL 源文件在編譯前必須做預處理: 
ecpg [ -d ] [ -o file ] file.pgc
這里選項 -d 標志打開調試..pgc 是標識 ecpg 源程序的任意標識. 
你可能需要把預處理輸出重定向到一個文件里.

編譯和鏈接
假設 Postgres 二進制在 /usr/local/pgsql,你將需要象下面這樣編譯和鏈接你的預處理過的源文件: 
gcc -g -I /usr/local/pgsql/include [ -o file ] file.c -L /usr/local/pgsql/lib -lecpg -lpq
語法

預處理器將包含兩個目錄到源文件里: 
#include 
#include 
變量定義
在 ecpg 源程序里的變量定義必須前導: 
EXEC SQL BEGIN DECLARE SECTION;
類似的,變量定義段必須以下面語句結束: 
EXEC SQL END DECLARE SECTION;
注意:在 2.1.0 以前,每個變量都必須在一個獨立的行里.到了 2.1.0,可以在一行里定義多個變量: 
char  foo(16), bar(16);
錯誤控制
SQL 交互部分定義如下: 
EXEC SQL INCLUDE sqlca;
注意:sqlca 是小寫.盡管可以使用 SQL 傳統,也就是說,利用大寫字符來區分嵌入的 SQL 和 C 語句,而 sqlca (它包含 sqlca.h 頭文件)必須小寫.這是因為 EXEC SQL 前綴表明這個 INCLUDE 將被 ecpg 分析.ecpg 區分大小寫地檢查頭文件(SQLCA.h 將不會被找到.)考慮大小寫后,EXEC SQL INCLUDE 還可以包含其他頭文件.
sqlprint 命令和 EXEC SQL WHENEVER 語句一起使用用以打開整個程序的錯誤控制: 
EXEC SQL WHENEVER sqlerror sqlprint;
和 
EXEC SQL WHENEVER not found sqlprint;
注意:這些并不是 EXEC SQL WHENEVER 語句全部用法的例子.其用法的更多的例子可以在 SQL 手冊里找到(例如, `The LAN TIMES Guide to SQL' by Groff and Weinberg).
于數據庫服務器聯接
一種聯接使用下面語句: 
EXEC SQL CONNECT dbname;
這里數據庫名稱沒有用引號引起.在 2.1.0 以前,數據庫的名稱要求被單引號引起. 
在聯接語句里聲明服務器名和端口名也同樣可以.語法時: 

dbname[@server][:port]
或者 
:postgresql://server[:port][/dbname][?options]
查詢
通常,其他應用,如 psql ,可以接受的話SQL 查詢都可以嵌入到你的 C 代碼里.下面是幾個如何做的例子. 
創建表: 

EXEC SQL CREATE TABLE foo (number int4, ascii char(16));
EXEC SQL CREATE UNIQUE index num1 on foo(number);
EXEC SQL COMMIT;
插入: 
EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, 'doodad');
EXEC SQL COMMIT;
刪除: 
EXEC SQL DELETE FROM foo WHERE number = 9999;
EXEC SQL COMMIT;
單字段選擇: 
EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad';
使用游標選擇: 
EXEC SQL DECLARE foo_bar CURSOR FOR
    SELECT number, ascii FROM foo
    ORDER BY ascii;
EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
...
EXEC SQL CLOSE foo_bar;
EXEC SQL COMMIT;
更新: 
EXEC SQL UPDATE foo
    SET ascii = 'foobar'
    WHERE number = 9999;
EXEC SQL COMMIT;
注意
沒有 EXEC SQL PREPARE 語句. 
所有結構定義必須列在定義節里面. 

參閱源文件里的 TODO 文件獲取更多缺失特性的描述.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产精品成人亚洲一区二区 | 黄色久| 国产精品久久久麻豆 | 91国内精品久久久久免费影院 | 性爱视频免费 | 国产精品视频中文字幕 | 片在线观看 | 在线成人www免费观看视频 | 国产一区二区三区视频在线 | 日韩欧美综合在线 | 伊人午夜视频 | 欧美性激情视频 | 日韩免费黄色 | 国产免费小视频在线观看 | 久久精品视频12 | 一区二区三区欧美在线观看 | 国产一区毛片 | 国产精品久久久不卡 | 激情毛片 | 久久久一区二区三区精品 | 亚欧美一区二区 | 日韩视频在线一区二区三区 | 污视频在线免费播放 | 香蕉久久久| 国产精品hd免费观看 | 欧美一级美国一级 | 91av日韩| 成人在线a | 日本欧美一区二区三区视频麻豆 | 欧美成年性h版影视中文字幕 | 天天操很很操 | 成人毛片在线免费看 | 欧美人成在线视频 | 欧美一区二区三区免费不卡 | 一区二区三区国产视频 | 黄色电影免费网址 | 激情视频免费看 | 国产91在线高潮白浆在线观看 | 成人三级黄色片 | 久久爽精品区穿丝袜 | 中文字幕在线观看二区 |