嵌入式 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_strings
為 on
。)當然,程式的 C 部分遵循 C 引號規則。
以下各節說明所有嵌入式 SQL 陳述式。
如果您在文件中發現任何不正確、與特定功能的使用體驗不符或需要進一步說明的地方,請使用 此表單 回報文件問題。