嵌入式 SQL 程式是由用普通程式語言(在此例中為 C 語言)編寫的程式碼,與在特殊標記區段中的 SQL 指令混合組成。要建置該程式,原始碼 (*.pgc
) 首先會通過嵌入式 SQL 預處理器,將其轉換為普通的 C 程式 (*.c
),然後可以使用 C 編譯器對其進行處理。(有關編譯和連結的詳細資訊,請參閱Section 34.10。) 轉換後的 ECPG 應用程式透過嵌入式 SQL 函式庫 (ecpglib) 呼叫 libpq 函式庫中的函式,並使用一般的前端-後端協定與 PostgreSQL 伺服器進行通訊。
嵌入式SQL比其他處理方法更具優勢SQL從 C 程式碼發出的指令。首先,它處理了在C程式中來回傳遞變數資訊的繁瑣工作。其次,程式中的 SQL 程式碼會在建置時檢查語法是否正確。第三,在 C 語言中嵌入式SQL已在SQL標準中指定,並受到許多其他SQL資料庫系統的支援。PostgreSQL 實作旨在盡可能符合此標準,並且通常可以將為其他 SQL 資料庫編寫的嵌入式SQL程式相對容易地移植到 PostgreSQL。
如前所述,為嵌入式SQL介面編寫的程式是普通的 C 程式,其中插入了特殊的程式碼來執行與資料庫相關的動作。此特殊程式碼始終具有以下形式
EXEC SQL ...;
這些語法上取代 C 敘述。根據特定敘述,它們可以出現在全域層級或函式中。
嵌入式SQLEXEC SQL
敘述遵循一般的SQL程式碼的大小寫規則,而不是 C 語言的規則。此外,它們允許巢狀 C 風格的註解,符合 SQL 標準。然而,程式的 C 語言部分遵循 C 標準,不接受巢狀註解。嵌入式SQL敘述同樣使用 SQL 規則,而不是 C 規則,來剖析引號字串和識別碼。(請參閱Section 4.1.2.1 和 Section 4.1.1 分別。) 請注意,ECPG 假設 standard_conforming_strings
為 on
。當然,程式的 C 語言部分遵循 C 語言的引號規則。
以下章節說明了所有嵌入式 SQL 敘述。
如果您在文件中看到任何不正確、與您特定功能的使用經驗不符或需要進一步說明的內容,請使用此表單回報文件問題。