Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在PL/pgSQL函数中获取执行的客户端详细信息_Postgresql_Plpgsql - Fatal编程技术网

Postgresql 如何在PL/pgSQL函数中获取执行的客户端详细信息

Postgresql 如何在PL/pgSQL函数中获取执行的客户端详细信息,postgresql,plpgsql,Postgresql,Plpgsql,请告诉我,如何在PL/pgSQL函数(something$whoexecuted)中获取函数执行客户端(仅限单客户端)的详细信息。我正在获取当前所有活动客户端的详细信息。 按照下面的代码 begin select ps.usename, ps.client_addr,ps.application_name from pg_stat_activity ps where state = 'active' and ps.usename in('user1') into pg_stat_activity

请告诉我,如何在PL/pgSQL函数(something
$whoexecuted
)中获取函数执行客户端(仅限单客户端)的详细信息。我正在获取当前所有活动客户端的详细信息。 按照下面的代码

begin
select ps.usename, ps.client_addr,ps.application_name from pg_stat_activity ps
where state = 'active'
and ps.usename in('user1') into pg_stat_activity_rowtype
;

pg_stat_活动的内容也可从PLpgSQL获得。所以你可以用

do $$
declare r record;
begin
  for r in select * from pg_stat_activity where pid = pg_backend_pid()
  loop
    raise notice '%', r;
  end loop;
end;
$$;
这些数据可以从以下来源收集:

select current_user, session_user, current_database(), inet_client_addr(), current_setting('application_name');
┌──────────────┬──────────────┬──────────────────┬──────────────────┬─────────────────┐
│ current_user │ session_user │ current_database │ inet_client_addr │ current_setting │
╞══════════════╪══════════════╪══════════════════╪══════════════════╪═════════════════╡
│ pavel        │ pavel        │ postgres         │                  │ psql            │
└──────────────┴──────────────┴──────────────────┴──────────────────┴─────────────────┘
(1 row)
更多信息请参阅文档: