我正在將表從一個模式復制到另一個模式。我正在嘗試傳遞要復制的表名稱的引數。但是當我執行 CALL 時,沒有在 Schema 中創建表。
命令:CALL copy_table('firstname', 'tableName1,tableName2,tableName3');
CREATE OR REPLACE PROCEDURE copy_table(user VARCHAR(50), strs TEXT)
LANGUAGE PLPGSQL
AS $$
DECLARE
my_array TEXT;
BEGIN
FOR my_array IN
SELECT string_to_array(strs, ',')
LOOP
EXECUTE 'CREATE TABLE ' || user || '.' || my_array || ' (LIKE public.' || my_array || ' INCLUDING ALL)';
END LOOP;
$$
能否請你幫忙?謝謝你。
uj5u.com熱心網友回復:
該函式string_to_array
回傳一個陣列值。遍歷陣列是由FOREACH
命令執行的,而不是FOR
.
請參閱檔案:
https://www.postgresql.org/docs/14/plpgsql-control-structures.html#PLPGSQL-FOREACH-ARRAY
CREATE FUNCTION sum(int[]) RETURNS int8 AS $$
DECLARE
s int8 := 0;
x int;
BEGIN
FOREACH x IN ARRAY $1
LOOP
s := s x;
END LOOP;
RETURN s;
END;
$$ LANGUAGE plpgsql;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/481669.html
標籤:PostgreSQL plpgsql 程序
上一篇:x:Bind不適用于Listview和ObservableCollection
下一篇:插入沒有空值