簡體   English   中英

有沒有辦法刪除libpq(PostgreSQL)中已經准備好的語句?

[英]Is there a way to delete an already prepared statement in libpq (of PostgreSQL)?

我已經通過利用 libpq(PostgreSQL 的)創建和使用准備好的語句。 我想知道是否有辦法在不斷開數據庫的情況下刪除准備好的語句? 或者實現這一目標的最佳方法是重新連接和重新准備?

我正在使用 PostgreSQL 8.4 版的 libpq。 我搜索了 9.2 文檔,但找不到與此相關的任何內容...

根據文檔DEALLOCATE是刪除准備好的語句的唯一方法,重點是:

也可以通過執行SQL PREPARE語句來創建與PQexecPrepared一起使用的預處理語句。 同樣,盡管沒有libpq函數可刪除准備好的語句 ,但SQL DEALLOCATE語句可用於該目的。

大概他們不必為此而暴露C函數,因為這很簡單:

  char query[NAMEDATALEN+12];
  snprintf(query, sizeof(query), "DEALLOCATE %s", stmtName);
  return PQexec(conn, query);

正如@Amit 提到的,有時 Postgress 會拋出“准備好的語句不存在”。

不幸的是,沒有DEALLOCATE IF EXISTS ,但一個簡單的解決方法是: DEALLOCATE ALL; .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM