我正在尝试在存储过程中打印多个列...任何人都可以请我提供一个使用查询的示例。谢谢。
例如,K,我有一个电影数据库,我想找到自1960年以来所有电影中有利可图的电影的百分比。我有这样做的queires,我在pgADMIN上运行它,它完美地工作;但是当我尝试创建存储过程时,我知道我必须使用创建类型持有者(yr INTEGER,prnct FLOAT)。所以现在我需要创建一个存储过程,它将返回一年中的两列和一个百分比,但是我如何才能使该列为年而下一列为prnct。
答案 0 :(得分:1)
如果您想要返回包含多列的单行,则可以使用record
或some_table
作为类型。
如果你有一个像movie
这样的表,你可以创建一个像这样的函数:
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
如果你想返回一些任意类型,那么你必须做这样的事情:
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
如果你想返回超过1行,你必须使用SETOF
修饰符,如下所示:
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS SETOF record AS
您可以创建如下函数:
CREATE OR REPLACE FUNCTION multicolumn_thing() RETURNS record AS $$
DECLARE
r record;
BEGIN
SELECT 1, 2, 3 INTO r;
RETURN r;
END
$$ LANGUAGE 'plpgsql';
并从中选择结果:
SELECT
columns.a,
columns.b,
columns.c
FROM multicolumn_thing() AS columns(a int, b int, c int);
使用setof
它是相同但多行的课程:)