Getting return value from .callproc
От | Larry Sevilla |
---|---|
Тема | Getting return value from .callproc |
Дата | |
Msg-id | CACgwW8EZ2yq4_i7oDN6ht2NHFUfo8zfxnJbUWQHV93dTU6ryOQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Getting return value from .callproc
Re: Getting return value from .callproc |
Список | psycopg |
My background is MS SQL and VB.
I'm new to Postgresql, Python & psycopg2.I have a problem in getting return value from a UDF in PostgreSQL into Python.
using PGAdmin3.
-----
CREATE TABLE public.personnel
(
companyid integer NOT NULL,
fullname character varying(100) NOT NULL,
ts timestamp without time zone NOT NULL,
serialid smallint NOT NULL DEFAULT nextval('personnel_serialid_seq'::regclass),
CONSTRAINT personnel_pkey PRIMARY KEY (serialid),
CONSTRAINT personnel_companyid_key UNIQUE (companyid),
CONSTRAINT personnel_fullname_key UNIQUE (fullname)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.personnel
OWNER TO postgres;
-----
-----
CREATE OR REPLACE FUNCTION public.personnelinsert(
incompanyid integer,
infullname character varying)
RETURNS integer AS
$BODY$
DECLARE
retval integer;
BEGIN
INSERT INTO personnel
(
companyid ,
fullname ,
ts
)
VALUES
(
incompanyid ,
infullname ,
now()
)
RETURNING serialid INTO retval;
RETURN retval;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.personnelinsert(integer, character varying)
OWNER TO postgres;
-----
-----
select personnelinsert(12345,'Newton, Isaac');
-----
-----
select personnelinsert(23456,'Einstein, Albert');
-----
I got personnelinsert = 2 (ok)
-----
import psycopg2
conn=psycopg2.connect(host='localhost',database='postgres',user='postgres',password='postgres')
cur=conn.cursor()
retval = cur.callproc('personnelinsert',[34567,'Galilei, Galileo'])
conn.commit()
cur.close()
conn.close()
print(retval)
-----
retval = [34567,'Galilei, Galileo']
Q2: I'm trying the OUT parameter, but cannot figure out. How can I access the OUT parameter from Python?
В списке psycopg по дате отправления: