postgresql 中,编写存储过程时,通过execute执行sql语句。可是有些情况下,比如update,不需要获取sql执行的结果,如果这时使用“execute”执行sql,就会报错“invalid input Syntax for type boolean”。这时,应该使用“perform”执行不需要获得返回值的sql。
当然,还有一种可能,如果定义了一个可以重定义的cursor,而打开这个cursor时使用了一个字符串作为sql,此时,遍历cursor的时候,不能再对这个sql进行赋值操作,否则也会报这个错误。
例如:
sql:='selectgid,tile_x,tile_y,the_geomfrom'||tbl; OPENcurFORexecutesql; WHILErow_num>0LOOP FETCHcurINTOgid,the_geom; geom_text:=GEOM2PIX(tile_x,the_geom); sql:='UPDATE'||tbl||'SETgeom_text='''||geom_text||'''wheregid='||gid; executesql;--这时就会报错 row_num:=row_num-1; ENDLOOP; 改成: sql:='selectgid,the_geom); sql_text:='UPDATE'||tbl||'SETgeom_text='''||geom_text||'''wheregid='||gid; executesql_text;--没问题 row_num:=row_num-1; ENDLOOP;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。