支援的版本: 目前 (17) / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 7.2 / 7.1

34.1. 概念 #

嵌入式 SQL 程式由以一般程式語言(在此範例中為 C 語言)編寫的程式碼,以及在特別標記的區段中混合的 SQL 命令所組成。 若要建置程式,原始程式碼 (*.pgc) 會先通過嵌入式 SQL 預處理器,預處理器會將其轉換為一般 C 程式 (*.c),之後 C 編譯器就可以處理它。(關於編譯和連結的詳細資訊,請參閱第 34.10 節。)轉換後的 ECPG 應用程式透過嵌入式 SQL 函式庫 (ecpglib) 呼叫 libpq 函式庫中的函式,並使用一般的前端-後端協定與 PostgreSQL 伺服器進行通訊。

嵌入式SQL相較於從 C 程式碼處理SQL命令的其他方法,具有優勢。 首先,它可以處理將資訊傳遞到您的C程式中變數的繁瑣工作。 其次,程式中的 SQL 程式碼會在建置時檢查語法是否正確。 第三,在 C 中的嵌入式SQL是在SQL標準中指定的,並受到許多其他SQL資料庫系統的支援。PostgreSQL 實作的設計目的是盡可能符合此標準,並且通常可以相對容易地將為其他 SQL 資料庫編寫的嵌入式SQL程式移植到 PostgreSQL

如前所述,為嵌入式SQL介面編寫的程式是普通的 C 程式,其中插入了特殊的程式碼來執行與資料庫相關的動作。 此特殊程式碼始終採用以下形式:

EXEC SQL ...;

這些陳述式在語法上取代了 C 陳述式。 根據特定陳述式,它們可以出現在全域層級或函式中。

嵌入式SQL陳述式遵循一般SQL程式碼的大小寫敏感規則,而不是 C 的大小寫敏感規則。 此外,它們允許根據 SQL 標準進行巢狀 C 樣式註解。 但是,程式的 C 部分遵循不接受巢狀註解的 C 標準。 嵌入式SQL陳述式同樣使用 SQL 規則,而不是 C 規則來剖析引號字串和識別符。(請參閱第 4.1.2.1 節第 4.1.1 節。請注意,ECPG 假定 standard_conforming_stringson。)當然,程式的 C 部分遵循 C 引號規則。

以下各節說明所有嵌入式 SQL 陳述式。

提交更正

如果您在文件中發現任何不正確、與特定功能的使用體驗不符或需要進一步說明的地方,請使用 此表單 回報文件問題。