[英]prepared statement inside function in postgres
我可以在MySQL中執行以下操作,但想知道如何在PostgreSQL中進行等效操作。 我必須將查詢包裝在字符串中,因為表名是可變的(不能只運行CREATE TABLE
)。 這全部在MySQL存儲過程/ Postgres函數中。
SET @createTable = CONCAT("CREATE TABLE ", table_name, "(
id int(11) NOT NULL AUTO_INCREMENT,
something varchar(255) NOT NULL");
PREPARE createTableStmt FROM @createTable;
EXECUTE createTableStmt;
DEALLOCATE PREPARE createTableStmt;
有人可以告訴我如何在Postgres中執行此操作嗎?
要運行一次 ,只需運行串聯的CREATE TABLE
語句。
要封裝功能以與變量表名稱重復使用,請使用帶有EXECUTE
的plpgsql函數:
CREATE OR REPLACE FUNCTION create_my_table(_tbl text)
RETURNS void AS
$func$
BEGIN
EXECUTE format('CREATE TABLE %I (id serial, something varchar(255) NOT NULL)', _tbl);
END
$func$ LANGUAGE plpgsql;
呼叫:
SELECT create_my_table('foo_table');
下降:
DROP create_my_table(text);
或者,如果僅在當前會話中需要它,則可以將其設置為臨時功能,並在會話結束時自動將其刪除:
CREATE OR REPLACE FUNCTION pg_temp.create_my_table(_tbl text) ...
使用串行列在Postgres中實現AUTOINCREMENT
:
您可能還希望將列PRIMARY KEY
為。
而且varchar(255)
幾乎沒有道理。 我只用text
代替:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.