我知道执行它的内置函数。但我学习SQL,我想了解如何在没有这些功能的情况下实现这一目标。 即我有下一个代码:
DECLARE @stmt VARCHAR;
SELECT column_1 INTO @stmt FROM some_table;
如何更改此代码,将@stmt
中的所有值存储为单个字符串'value 1, value2, value 3, ..., value N'
?
答案 0 :(得分:2)
如果要连接column_1的不同值,请使用此
SELECT string_agg(column_1,',') INTO @stmt FROM some_table;
答案 1 :(得分:1)
经过一番搜索,我解决了这个问题:
CREATE OR REPLACE FUNCTION get_table_names() RETURNS VARCHAR AS $$
DECLARE stmt VARCHAR;
DECLARE temp_row RECORD;
BEGIN
FOR temp_row IN (SELECT table_name FROM information_schema.tables)
LOOP
IF stmt IS NULL
THEN stmt := temp_row.table_name;
ELSE stmt := stmt || ',' || temp_row.table_name;
END IF;
END LOOP;
RETURN stmt;
END;
$$ LANGUAGE plpgsql;
即使在我的情况下,我也不认为这是最好的解决方案,但我找不到更好的解决方案。
很多更好的解决方案:
CREATE OR REPLACE FUNCTION get_table_names()
RETURNS VARCHAR
AS
$$
SELECT string_agg(table_name,',')
FROM information_schema.tables;
$$
LANGUAGE sql;