我是PostgreSQL的新手,我有一个用T编写的存储过程,我想把它转换成PostgreSQL。我已经做了这么多,但我被困在地方,我搜索了那么多的地方,但没有在互联网上找到任何东西。
下面是我需要适应PGSQL的PGSQL存储过程。
If <someCondi>
BEGIN
...
END
ELSE
BEGIN
GENERATE:
BEGIN try
IF <someCondi>
BEGIN
我得到了以下错误,谁能给我一个例子来避免它:
ERROR: cannot begin/end transactions in PL/pgSQL
HINT: Use a BEGIN block with an EXCEPTION clause instead.
CONTEXT: PL/pgSQL function transfer(integer,integer,numeric) line 13 at SQL statement
PL/pgSQL function inline_code_block line 2 at EXECUTE
SQL state: 0A000
START TRAN
在我的Dockerfile中,我转到用户postgres。总之,环境变量HOME等于/var/lib/pgsql。现在我想创建另一个环境变量PGDATA,它应该是$HOME/data。但不知怎的,我在Dockerfile里做不到。我做了:
user postgres
run env # HOME=/var/lib/pgsql
env PGDATA=$HOME/data
run env # PGDATA=/data
所以当我构建图像时,$HOME在第3行是空的。我犯了什么错?
def fetch_last_recorded_activity_date(l_pgsql_pool, l_pg_conn, l_sql_statement):
"""
:param l_pgsql_pool: Postgres Connection Pool
:param l_pg_conn: Postgres connection object to run various operations
:return:
"""
try:
with l_pg_conn.cursor()
以下代码:
Copy ( select bla
from some_table p,
some_procedure (par1 := null,
par2 := null ) as sp
where p.var1 = sp.var1
order
by some_table_id) to stdout;
..。在脚本中工作(即使用psql),但它在Pl/pgSQL函数中失败。
在函数内部的错误消息如下:
"ERROR: can
当尝试通过JDBC驱动程序(postgresql-9.4.1211.jre7.jar;使用ANT)运行PL/pgSQL时,我得到以下错误:错误:语法错误位于或接近"$“
有没有办法通过设置JDBC属性或更改PL/pgSQL的查询来解决这个问题?
查询:
DO $$
BEGIN
CREATE SEQUENCE id_sequence_SEQ OWNED BY id_sequence.id;
EXCEPTION WHEN duplicate_table
THEN
END
$$
LANGUAGE plpgsql;
错误:
org.postgresql.util.PSQLExcep
我有以下postgresql函数,在该函数中,我试图返回两个名为campusid和campusname的参数。
CREATE OR REPLACE FUNCTION getall(IN a character varying, IN b character varying)
RETURNS TABLE(id character varying, name character varying) AS
$BODY$
BEGIN
if $1 = 'PK' then
SELECT * from table1;
end if;
END
$BODY$
LANGUAGE pl
我有这样的查询
$sql_tampil = DB::connection('pgsql2')->select("SELECT sum(nilai) FROM laporan WHERE bulan='01' AND tahun='2011' AND (audited='0') AND");
$sql_tampil2 = DB::connection('pgsql2')->select("SELECT sum(nilai) FROM laporan WHERE bulan='
我有一个名为rezultz的表,其中一行只包含有效的SQL查询,例如:创建触发器.我试图用一个名为get_all_rezultz()的函数来执行它们,但是它似乎不起作用,为什么呢?
CREATE OR REPLACE FUNCTION get_all_rezultz() RETURNS SETOF rezultz AS
$BODY$
DECLARE
r rezultz%rowtype;
BEGIN
FOR r IN
SELECT * FROM rezultz
LOOP
-- can do some processing here
RET
在此触发器的Orderlist中插入一行时,我会收到一个错误:
ERROR: column "qty_in_stock" does not exist
LINE 1: SELECT qty_in_stock > 0
^
QUERY: SELECT qty_in_stock > 0
CONTEXT: PL/pgSQL function books_upd() line 6 at CASE
****** Error **********
ERROR: column "qty_in_stock" does not exist
我有一个非常简单的PL/pgSQL脚本:
declare x varchar(100);
当我运行它时,我得到一条消息:
[WARNING ] declare x varchar(100)
ERROR: syntax error at or near "varchar"
LINE 1: declare x varchar(100)
^
我真的不明白这有什么问题。
我正在尝试使用以下命令获取postgres服务器状态:
sudo /etc/init.d/postgres status -u postgres
但得到以下错误:
/home/alex/olddisk/usr/local/pgsql/bin/pg_ctl: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
我补充道:
export LD_LIBRARY_PATH=""
export LD_LIBRARY_PATH=
好的,这里有一个带有plsql if语句的pgsql查询:
DO
$do$
BEGIN
IF $1 & (SELECT group_flags FROM technic WHERE id = $2 LIMIT 1) > 0 THEN
UPDATE technic SET group_flags = group_flags - $1 WHERE id = $2;
END IF;
END
$do$
我正在用pg_prepare() PHP函数准备它,然后执行它。问题是pgsql返回这个错误-
Warning: pg_execute(): Query failed: ERROR:
我有一个匿名块PL/pgSQL:
DO
$$
DECLARE secuencial INT;
BEGIN
SELECT MAX("CodigoFactura") + 1 INTO secuencial FROM "Factura";
IF secuencial IS NULL THEN
secuencial := 1;
END IF;
RAISE NOTICE '%', secuencial;
END;
$$
匿名块PL/pgSQL从Npgsql执行,如下所示:
NpgsqlConnectio
如何在PostgreSQL,PL/pgSQL上执行开关CASE语句?
目前,我们可以对这样的一个IF块:
IF boolean THEN
statements;
ELSE
IF boolean THEN
statements;
ELSE
statements;
END IF;
END IF;
然而,在一些情况下,这是不可取的。然后,一个更好的方法是使用一些接近通常的switch语句。
相关线程:
我在DBMS中有这个存储过程(Postgresql)
CREATE OR REPLACE FUNCTION getallentree()
RETURNS SETOF entree AS
$BODY$
begin
select * from entree ;
end;
$BODY$
LANGUAGE plpgsql
调用此过程后:
select * from getAllEntree();
我收到这个错误:
ERROR: query has no destination for result data
HINT: If you want to discard the
我目前正在对PL/pgSQL进行一些实验,并想知道是否有一种更优雅的方法可以这样做:
select c.data into data from doc c where c.doc_id = id and c.group_cur > group_cur order by c.id desc limit 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
select c.data into data from doc c where c.doc_id = id and c.global_cur > global_cur order by
我在Postgis和Postgresql两方面都很绿色。为了更改SRID,我想更改表中的geom列,但我收到了以下错误:
cannot alter type of a column used by a view or rule
DETAIL: rule _RETURN on view vw_select_location depends on column "geom"
CONTEXT: SQL statement "ALTER TABLE public.ponds_data ALTER COLUMN geom TYPE geometry(PointZM, 421