相关疑难解决方法(0)

PostgreSQL:错误:42601:返回"记录"的函数需要列定义列表

(免责声明:PostgreSQL新手.)

好吧,据我所知,我的功能与我见过的样本非常相似.有人能否告诉我如何让这个工作?

create or replace function get_user_by_username(
    username varchar(250),
    online boolean
    ) returns setof record as $$
declare result record;
begin

    if online then 
        update users
        set last_activity = current_timestamp
        where user_name = username;
    end if;

    return query
    select
        user_id,
        user_name,
        last_activity,
        created,
        email,
        approved,
        last_lockout,
        last_login,
        last_password_changed,
        password_question,
        comment
    from
        users
    where
        user_name = username
    limit 1;

    return;
end;
$$ language plpgsql;
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql

36
推荐指数
2
解决办法
4万
查看次数

重构PL/pgSQL函数以返回各种SELECT查询的输出

我写了一个函数,输出一个SELECT以文本形式组成的PostgreSQL 查询.现在我不想再输出文本,但实际上SELECT对数据库运行生成的语句并返回结果 - 就像查询本身一样.

到目前为止我所拥有的:

CREATE OR REPLACE FUNCTION data_of(integer)
  RETURNS text AS
$BODY$
DECLARE
   sensors varchar(100);   -- holds list of column names
   type    varchar(100);   -- holds name of table
   result  text;           -- holds SQL query
       -- declare more variables

BEGIN
      -- do some crazy stuff

      result := 'SELECT\r\nDatahora,' || sensors ||
      '\r\n\r\nFROM\r\n' || type ||
      '\r\n\r\nWHERE\r\id=' || $1 ||'\r\n\r\nORDER BY Datahora;';

      RETURN result;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION data_of(integer) OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

sensors …

sql database postgresql dynamic-sql plpgsql

32
推荐指数
1
解决办法
2万
查看次数

标签 统计

plpgsql ×2

postgresql ×2

database ×1

dynamic-sql ×1

sql ×1