首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLPython中的复合数据类型转换

PLPython中的复合数据类型转换
EN

Stack Overflow用户
提问于 2012-02-12 08:21:44
回答 1查看 762关注 0票数 0

我正在用PlPython编写一个具有用户定义类型的存储过程。我知道Plpython不支持用户定义的类型,所以,我为用户定义的类型创建了一个转换。当我调用plpy.prepare时,我仍然得到一个错误。我不确定我是否使用了错误的强制转换-示例代码如下:

代码语言:javascript
复制
#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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-13 02:50:58

更新:

当以$1::格式的变量指定的用户定义类型按如下方式编写时,Plpython接受查询,并停止抛出复合类型不支持的异常。

代码语言:javascript
复制
insert_qry = 'Insert into manager (mgr) values($1::person)'
value_type = ['text']

最后,我真的不需要在数据库上做任何额外的转换操作。它只需要像上面那样调整变量就行了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9245283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档