0
私はPlPythonのストアドプロシージャをユーザ定義型で記述しています。私はPlpythonがユーザー定義型をサポートしていないことを知っています。したがって、ユーザー定義型のCASTを作成しました。それでもplpy.prepareを呼び出すとエラーが発生します。私は間違っCASTを使用していた場合、私はわからない - 例のコードは以下の通りです:PostgreSQLのPLPython&CASTコンポジットデータ型
#User Defined Type - person
CREATE TYPE person As(name character varying(50), state character(2));
#Table definition using 'person'
CREATE TABLE manager As(id integer, mgr person)
#CAST for person
CREATE OR REPLACE FUNCTION person_to_text(person) RETURNS text AS 'SELECT ROW($1.*)::text' LANGUAGE SQL;
CREATE CAST (cv_person as text) WITH FUNCTION person_to_text(person)
#PlPython procedure
CREATE OR REPLACE FUNCTION load_portfolio_assoc (name text, state text) RETURNS integer AS $$
mgr_str ="('"+name+"','"+state+"')"
insert_qry = 'Insert into manager (mgr) values($1)'
value_type = ['text']
qry = plpy.prepare(insert_qry,value_type)
rv = plpy.execute(qry, [mgr_str])
return 1
$$ LANGUAGE plpython3u;