我需要有关动态 SQL 和在函数中动态设置 table 名称的帮助

I need help regarding dynamic SQL and dynamically setting the table name in a function

所以,我需要创建一个函数,returns table 中的行数,table 名称必须由用户指定。这是我的代码:

CREATE OR REPLACE FUNCTION datiInTab( table regclass )
RETURNS NUMERIC(5) AS
$$
DECLARE
num NUMERIC(5);
cmd VARCHAR(1000):='SELECT COUNT(*) FROM ';
BEGIN
EXECUTE cmd || table;
RETURN num;
END;
$$
LANGUAGE plpgsql;
SELECT * FROM datiInTab(corsi); 

这是我执行后 returns 的错误:

ERROR: ERRORE: la colonna "corsi" non esiste 
LINE 1: SELECT * FROM datiInTab(corsi); ^ SQL state: 42703 Character: 25

表示“corsi”列不存在。 我尽可能多地调试,唯一的结论是我真的不知道我需要做什么才能使用这个动态调用。

编辑:regclass 是最后一分钟添加的,在尝试使用简单的 varchar 后,它返回了完全相同的错误

您不能命名变量 table。是保留字

你必须传递一个字符串,否则 postgres 认为你想传递一个列

CREATE OR REPLACE FUNCTION datiInTab( table1 regclass )
RETURNS NUMERIC(5) AS
$$
DECLARE
num NUMERIC(5);
cmd VARCHAR(1000):='SELECT COUNT(*) FROM ';
BEGIN
EXECUTE cmd || table1;
RETURN num;
END;
$$
LANGUAGE plpgsql;
SELECT * FROM datiInTab('corsi'); 
ERROR:  relation "corsi" does not exist

第 1 行:SELECT * 来自 datiInTab('corsi'); ^

db<>fiddle here