Leg*_*123 1 sql database postgresql
我有以下函数,它将表名作为参数并返回表:
CREATE FUNCTION func(tab_name varchar) RETURNS TABLE (
col text,
col2 text
) AS $$
BEGIN
RETURN QUERY
EXECUTE format('SELECT * FROM %I', tab_name);
END;
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
假设相反,我想返回表 100 次:
CREATE FUNCTION func(tab_name varchar) RETURNS TABLE (
col text,
col2 text
) AS $$
BEGIN
RETURN QUERY
EXECUTE format('
SELECT * FROM %I
UNION ALL
SELECT * FROM %I,
UNION ALL
SELECT * FROM %I
......
', tab_name, tab_name, tab_name,.....);
END;
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用命名参数,而不是将 tab_name 放置 100 次?
您可以指示参数的位置并多次使用参数,例如
select format('%2$s - %1$s - %2$s', 'first', 'second');
format
-------------------------
second - first - second
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |