Postgresql Postgres-执行函数中的SQL状态:22004
我试图创建一个函数来计算列中的行数。目标是将表和列作为参数传递给函数,并返回行数 功能是:Postgresql Postgres-执行函数中的SQL状态:22004,postgresql,plpgsql,Postgresql,Plpgsql,我试图创建一个函数来计算列中的行数。目标是将表和列作为参数传递给函数,并返回行数 功能是: CREATE OR REPLACE FUNCTION public.totalrecords(column_names text,table_names text) RETURNS bigint LANGUAGE 'plpgsql' AS $BODY$DECLARE total integer; BEGIN EXECUTE format('SELECT count(%s) in
CREATE OR REPLACE FUNCTION public.totalrecords(column_names text,table_names text)
RETURNS bigint
LANGUAGE 'plpgsql'
AS $BODY$DECLARE
total integer;
BEGIN
EXECUTE format('SELECT count(%s) into %I FROM %s', column_names,total,table_names);
RETURN total;
END;$BODY$;
知道有人为什么不工作吗?非常感谢您的帮助。提前感谢我假设这只是plpgsql的一个练习-正如@a_horse_和_no_name所指出的,您不需要函数来实现这一点。也就是说,只需将
放到格式(…)
之外的total
中,就可以了。此外,不需要传递列名来获取表的计数
,因此您可以将函数限制为单个参数,例如
CREATE OR REPLACE FUNCTION public.totalrecords(table_names text)
RETURNS bigint LANGUAGE 'plpgsql'
AS $BODY$
DECLARE total INTEGER;
BEGIN
EXECUTE format('SELECT count(*) FROM %s', table_names) INTO total;
RETURN total;
END;$BODY$;
例如:
CREATE TEMPORARY TABLE t (txt TEXT);
INSERT INTO t VALUES ('foo'),('bar');
SELECT * FROM totalrecords('t');
totalrecords
--------------
2
(1 Zeile)
我假设这只是plpgsql的一个练习——正如@a_horse_和_no_name所指出的,您不需要函数来实现这一点。也就是说,只需将
放到格式(…)
之外的total
中,就可以了。此外,不需要传递列名来获取表的计数
,因此您可以将函数限制为单个参数,例如
CREATE OR REPLACE FUNCTION public.totalrecords(table_names text)
RETURNS bigint LANGUAGE 'plpgsql'
AS $BODY$
DECLARE total INTEGER;
BEGIN
EXECUTE format('SELECT count(*) FROM %s', table_names) INTO total;
RETURN total;
END;$BODY$;
例如:
CREATE TEMPORARY TABLE t (txt TEXT);
INSERT INTO t VALUES ('foo'),('bar');
SELECT * FROM totalrecords('t');
totalrecords
--------------
2
(1 Zeile)
“计算列中的行数”-列没有行。表可以。实际上,您不需要函数“计算列中的行数”——列没有行。表可以。实际上不需要函数: