Chapter 30. ecpg - 在 C 裡嵌入 SQL

Table of Contents
30.1. 概念
30.2. 與數據庫服務器連接
30.3. 關閉連接
30.4. 運行 SQL 命令
30.5. 選取一個連接
30.6. 使用宿主變量
30.6.1. 概述
30.6.2. 聲明段
30.6.3. SELECT INTOFETCH INTO
30.6.4. 指示器
30.7. 動態 SQL
30.8. 使用 SQL 描述符範圍
30.9. 錯誤處理
30.9.1. 設置回調
30.9.2. sqlca
30.9.3. SQLSTATESQLCODE 之比較
30.10. 頭文件
30.11. 處理嵌入的 SQL 程序
30.12. 庫函數
30.13. 內部

這章描寫一種用于 PostgreSQL 的嵌入SQL包。 它與CC++一起使用. 這部分是由 Linus Tolke() 和 Michael Meskes(

我們承認,這份文檔相當不完整。但是因為這個接口是標準,所以我們可以 在有關 SQL 的資源裡找到許多額外的信息。

30.1. 概念

嵌入 SQL 程序主要由一種普通的編程語言代碼組成,在我們這個場合中是 C, 並且在其中與一些特殊標記的段混合。要制作這樣的程序,源代碼首先 經過嵌入的 SQL 預處理器處理,它把源代碼轉換成普通的 C 程序, 然後這個程序可以用 C 編譯工具鏈進行處理。

嵌入的 SQL 相比于其它的從 C 代碼中處理 SQL 命令的優點有幾條。首先,它替你照看那些從你的 C 程序中的變量 中傳來傳去數值的事情。第二,在 C 代碼裡嵌入 SQL 是定義在 SQL 標準裡的,並且被許多其它的 SQL 數據庫支持。 PostgreSQL 的實現被設計成盡可能匹配這個標準,並且 通常可以把為其它 SQL 數據庫書寫的 SQL 移植到 PostgreSQL 中來,反之亦然。

如上所述,為嵌入 SQL 接口寫的程序通常是帶著 插入進來的特殊代碼的 C 程序,這些特殊代碼用于執行與數據庫相關的 動作。這些特殊代碼通常的形式是下面這樣:

EXEC SQL ...;

這些語句語法上佔據 C 語句的位置。根據具體語句的不同,它們可以出現 在全局環境中或者在一個函數裡。嵌入的 SQL 語句遵循 普通 SQL 代碼的大小寫敏感規則,而不是遵循 C 代碼的。

下面的小節都是用來解釋所有的嵌入 SQL 語句的。