Postgresql 如何从plpgsql中的存储过程打印多个列

Postgresql 如何从plpgsql中的存储过程打印多个列,postgresql,plpgsql,Postgresql,Plpgsql,我正在尝试在一个存储过程中打印多个列……谁能给我提供一个使用查询的示例。多谢各位 例如,我有一个电影数据库,我想找出1960年以来所有电影中盈利电影的百分比。我有这样做的问题,我在pgADMIN上运行它,它工作得非常完美;然而,当我尝试创建存储过程时,我知道我必须使用createtypeholder作为(yrinteger,prnctfloat) 因此,现在我需要创建一个存储过程来返回两列,一列是年份,一列是百分比,但是如何确定这一列是yr,下一列是prnct。如果要返回包含多列的单行,则可以使

我正在尝试在一个存储过程中打印多个列……谁能给我提供一个使用查询的示例。多谢各位

例如,我有一个电影数据库,我想找出1960年以来所有电影中盈利电影的百分比。我有这样做的问题,我在pgADMIN上运行它,它工作得非常完美;然而,当我尝试创建存储过程时,我知道我必须使用createtypeholder作为(yrinteger,prnctfloat)


因此,现在我需要创建一个存储过程来返回两列,一列是年份,一列是百分比,但是如何确定这一列是yr,下一列是prnct。

如果要返回包含多列的单行,则可以使用
记录
某些表
作为类型

如果您有一个类似于
movie
的表,则可以创建如下函数:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
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);
如果要返回任意类型,则必须执行以下操作:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
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);
如果要返回多于1行,则必须使用如下
SETOF
修饰符:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
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);
您可以创建如下函数:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
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);
并按如下方式从中选择结果:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS
CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS record AS
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);

对于
集合
它是相同的,但有多行:)

所以基本上是这样的,基本上是这样的:创建或替换函数profit\u p\m()以$$的形式返回记录集,但我如何指定哪一列是哪一列?请提供一个示例,我如何使用该记录,其中我将返回两列以及属于这些列的所有行。我将其用作记录集,该记录集应显示两列以及所有行。我如何在java程序中调用该记录集。是这样的吗。callm=con.prepareStatement(“从queryTen()中选择*)@mizz-a:我现在添加了一个
记录的示例。