Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要关于动态SQL和在函数中动态设置表名的帮助_Sql_Postgresql_Dynamic Sql_Sql Function - Fatal编程技术网

我需要关于动态SQL和在函数中动态设置表名的帮助

我需要关于动态SQL和在函数中动态设置表名的帮助,sql,postgresql,dynamic-sql,sql-function,Sql,Postgresql,Dynamic Sql,Sql Function,因此,我需要创建一个函数来返回表中的行数,表名必须由用户指定。这是我的代码: 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 plpgsq

因此,我需要创建一个函数来返回表中的行数,表名必须由用户指定。这是我的代码:

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); 
这是我执行后返回的错误:

ERROR: ERRORE: la colonna "corsi" non esiste 
LINE 1: SELECT * FROM datiInTab(corsi); ^ SQL state: 42703 Character: 25
这意味着“科西”列不存在。 我尽可能多地调试,唯一的结论是,我真的不知道我需要做什么才能利用这个动态调用


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

您无法命名变量表。这是一个保留字

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

错误:关系“corsi”不存在 第1行:从datiInTab('corsi')中选择*; ^

小提琴

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 LINE 1: SELECT * FROM datiInTab('corsi'); ^