具有最新的PostgreSQL支持程序。官方博客引用“与函数相反,不需要过程来返回值”。(https://blog.2ndquadrant.com/postgresql-11-server-side-procedures-part-1/)
所以我的问题是,实际上我有什么方法可以在过程中返回错误代码或响应吗?(由于Postgres中的程序比较新,因此在线资源很少。)
这是我返回这些“错误代码”的意思的示例
create or replace PROCEDURE multislot_Update_v1
(
p_id in varchar2,
p_name in varchar2,
p_enname in varchar2,
results out SYS_REFCURSOR
) AS
rowNumber int;
defaultNumber int;
BEGIN
select count(1) into rowNumber from MULTISLOTSGAME where fid=P_id;
if (rowNumber = 0) then
open results for
select '1' as result from dual;
return;
end if;
update MULTISLOTSGAME set
name = P_name,
enname = P_enname
where fid = P_id ;
commit;
open results for
select '0' as result, t1.* …Run Code Online (Sandbox Code Playgroud) 我在使用tinyint扩展时对Postgres进行了一些测试,当时我遇到了关于其范围的令人惊讶的事情.打字时,select -128::tinyint它给了我一条ERROR: tinyint out of range消息,这根本不是我所期待的.
假设负数应该比正的最大值(或单个字节整数为127)大1(或者更小)我认为这是扩展的错误,但是在尝试使用非扩展数字时,我发现完全相同的是发生.
select -32768::smallint - >超出范围
select -2147483648::integer - >超出范围
select -9223372036854775808::bigint - >超出范围
参照数字数据类型的文档(https://www.postgresql.org/docs/current/datatype-numeric.html)这些数字都应该是可能的-所有负数少了一个-32767,-2147483647,-9223372036854775807正常工作,所以我很好奇,为什么会这样,或者这甚至发生在其他人的副本上.
我尝试在ubuntu 16.x桌面上使用postgresql 10和postgresql 11.
在 Postgres 11 中,存储过程不打算返回结果集吗?因为当我们运行以下命令时,它说运行成功,但没有返回结果。
CREATE OR REPLACE PROCEDURE test()
LANGUAGE sql
AS $$
SELECT * from aTable;
$$;
call test();
Run Code Online (Sandbox Code Playgroud) Postgres order by 得到错误的结果:
\n\npostgres=# SELECT (url) FROM posts_post ORDER BY url;\n url\n--------------------------------------------------------------------------------------------------\n -----------------------------------------------------------------------------------------\n http://nautil.us/issue/70/variables/aging-is-a-communication-breakdown\n https://github.com/felixse/FluentTerminal\n http://www.bbc.com/future/story/20160408-the-ancient-peruvian-mystery-solved-from-space\n http://www.graffathon.fi/2016/presentations/additive_slides.pdf\n(4 rows)\nRun Code Online (Sandbox Code Playgroud)\n\n如您所见,“ http://nautil.us/issue/70/variables/aging-is-a-communication-breakdown ”存在问题。它排序不正确。
\n\n我使用 Python 和 psycopg2 将解析结果保存在 Postgres 中,并指出我无法测试排序,导致 Postgres 返回 order by 错误。
\n\n更新:重现:
\n\nCREATE TABLE test_post ("id" serial NOT NULL PRIMARY KEY, "title" text NOT NULL, "url" text NOT NULL, "created" timestamp with time zone NOT NULL);\n\nINSERT INTO test_post (title, url, created) VALUES (\'Aging Is\', \'http://nautil.us/issue/70/variables/aging-is-a-communication-breakdown\', NOW()) ON CONFLICT DO NOTHING;\n\nINSERT INTO test_post …Run Code Online (Sandbox Code Playgroud) 请检查我运行的以下命令:
C:\Windows\system32>psql -U root
Password for user root:
psql: FATAL: database "root" does not exist
Run Code Online (Sandbox Code Playgroud) 我一直在外部硬盘驱动器上运行 postgres 数据库,在将其重新连接到一台睡眠中的笔记本电脑(认为服务器仍在运行)后,该数据库似乎已损坏。运行一堆重新索引命令来修复其他一些错误后,我现在收到以下错误。
错误:pg_toast_2618 中的 toast 值 12942 缺少块编号 0
返回此错误的命令示例是:
select table_name, view_definition from INFORMATION_SCHEMA.views;
Run Code Online (Sandbox Code Playgroud)
我已经运行命令“select 2618::regclass;” 这给了你问题表。然而,重新索引似乎并不能解决问题。我看到很多关于查找损坏的行并将其删除的建议。但是,在我的实例中似乎已损坏的表是 pg_rewrite,它似乎不是损坏的行,而是损坏的列。
我已经运行了以下命令,但它们没有解决问题。
REINDEX table pg_toast.pg_toast_$$$$;
REINDEX table pg_catalog.pg_rewrite;
VACUUM ANALYZE pg_rewrite; -- just returns succeeded.
Run Code Online (Sandbox Code Playgroud)
我可以运行以下 SQL 语句,它将返回数据。
SELECT oid, rulename, ev_class, ev_type, ev_enabled, is_instead, ev_qual FROM pg_rewrite;
Run Code Online (Sandbox Code Playgroud)
但是,如果我将 ev_action 列添加到上面的查询中,它会引发类似的错误:
错误:pg_toast_2618 中的 toast 值 11598 缺少块编号 0
此错误似乎会影响对 INFORMATION_SCHEMA 表等内容的所有与架构相关的查询。幸运的是,似乎我的所有表和表中的数据都很好,但我无法查询生成这些表的 sql,并且我创建的任何视图似乎无法访问(尽管我注意到我可以创建新视图)。
我对 Postgresql 不太熟悉,无法确切知道 pg_rewrite 是什么,但我猜我不能只截断表中的数据或设置 ev_action = null。
我不确定下一步该怎么处理我迄今为止收集到的信息。
我正在运行 PostgreSQL,并且必须在端口 5432 和 5433 之间进行更改。
如何配置 Postgres 同时监听两个端口?
我是 PostgreSQL 新手,我想了解如何查看 PostgreSQL 实例中共享缓冲区的利用率。
假设我的配置中有shared_buffers = 8GB,有没有办法检查该8GB中使用了多少?
非常感谢,苏雷什。
我得到一个类型为 _text 的表
创建表mt(id int8,
方向_text null)
它不是我的代码,所以我不知道什么是 type _text 以及如何使用它。我在文档https://www.postgresql.org/docs/11/datatype.html中查找它 ,但没有找到。
我的问题是有人在 postgresql 中使用 _text 吗?我需要一个例子。
我的 PostgreSQL 11 中有一个具有只读访问权限的用户。我如何授予他们在某些数据库表中写入/编辑数据的权限,例如Table1且Table2仅?
我不希望他们更改数据库架构或表结构。