PostGIS 存储过程返回类型
Postgresql存储过程返回值的方式有很多,在此先只记录一下自己用到过的,慢慢拓展
1、type型,这里geometry可以是任何postgresql支持的类型(integer/text/character varying.....)
CREATE OR REPLACE FUNCTION test(
tbl character varying)
RETURNS geometry AS
$BODY$
declare
v_res geometry;--最终结果
begin
return v_res;
end;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100;
ALTER FUNCTION test(character varying)
OWNER TO postgres;
2、table型,返回数据集的一种,需要自己定义返回的字段,这里用return query执行select返回
CREATE OR REPLACE FUNCTION test(
IN tbl character varying)
RETURNS TABLE(v_gid integer, v_res geometry) AS
$BODY$
declare
begin
--执行返回结果
return query
select v_uptap_gid as res_uptap_gid,v_uptap_geom as res_uptap_geom ;
end;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION test(character varying)
OWNER TO postgres;
3、setof table/view型,返回数据集的一种,通常是返回某表查询后的数据
但是必须是表内已有字段,新增的字段不行(比如我要在返回时标识类型 'select type,a.* from tb a')
方便的地方在于不用强制定义返回字段('select * from tb' 也可以)
CREATE OR REPLACE FUNCTION test(
IN tbl character varying)
RETURNS SETOF table1 AS
$BODY$
declare
begin
SELECT * from table1;
--或者
return query select * from table1;
end;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION test(character varying)
OWNER TO postgres;
3、setof record型,返回数据集的一种,与setof table类似
不同的是,我setof record可以返回所有字段,供调用的人取字段
CREATE OR REPLACE FUNCTION test(
IN tbl character varying)
RETURNS SETOF record AS
$BODY$
declare
r record;
begin
for r in EXECUTE 'select * from tb' loop
return next r;
end loop;
return;
end;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION test(character varying)
OWNER TO postgres; --调用
select * from test('tb') as member(id int, name text);
PostGIS 存储过程返回类型的更多相关文章
- Entity Framework 6 Recipes 2nd Edition(10-4)译 -> 从存储过程返回一个复杂类型
10-4. 从存储过程返回一个复杂类型 问题 想在方法中使用一个返回复杂类型的存储过程 解决方案 假设我们已经有如Figure 10-3.所示的模型,该Employee (雇员)模型包含Employe ...
- 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...
- PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...
- ibatis调存储过程返回游标
http://blog.sina.com.cn/s/blog_6f3ca78f01010pmj.html iBatic调用与JAVA调用很类似,只是JAVA把参数的注册放到了类里面,而iBatis把参 ...
- asp.net 读取sql存储过程返回值
关于Exec返回值的问题有很多,在这做个简要的总结. 读查询语句示例: Declare @count int select @Count 要点: ...
- EF调用sp,EF自动生成返回类型
在sp中添加下面的红色部分,就是执行sp时的返回类型,后面在EF中添加该sp后,EF会在DBContext文件中,自动生成调用该sp的代码,包括返回类型等,如下: public virtual Obj ...
- taskctl实现自定义mysql存储过程作业类型调用
TASKCTL支持任意作业类型的扩展,但目前TASKCTL 4.1.3版本中并没有内置mysql存储过程的作业插件.通过介绍使TASKCTL支持调度mysql存储过程作业类型的步骤,一方面解决一些朋友 ...
- PostgreSQL 调用存储过程返回结果集
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...
- ASP.NET调用存储过程并接收存储过程返回值
ASP.NET调用存储过程并接收存储过程返回值 2010-08-02 11:26:17| 分类: C#|字号 订阅 2010年02月27日 星期六 23:52 假设表结构Create T ...
随机推荐
- Web登录中的信心安全问题
1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...
- mysql8 的安装和设置
mysql8的安装 写在前面 与5.*的版本整体差不多,但是安装细节决定成败 下载 点击https://dev.mysql.com/downloads/file/?id=476233,也可以点这里,有 ...
- Qt乱码的问题
1.在启动应用程序前加入以下代码: //配置字符编码环境,让应用程序支持中文. QTextCodec *codec = QTextCodec::codecForName("System&qu ...
- linux 下ln命令--笔记
linux 下ln命令 ln命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s"选项.注意:符号链接文件不是一个独立 ...
- 回头看 vue-router
回头看 vue-router 复习 我的github iSAM2016 目录 响应路由参数的变化 嵌套路由 函数式导航 路由的命名 示例:切换路由的时候可以修改页面的标题 导航钩子 全局钩子 实例:检 ...
- jquery链式原理.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 使用VS2013操作MYSQL8 (ADO.NET方式 & EF6)
今天有时间测试了一下通过.net环境操作MYSQL数据库,测试过程及结果记录如下: 1.MYSQL安装 (1)我是从MYSQL官网下载的最新版,即MYSQL8.0,在MySql官网的下载页面,找到“M ...
- 图数据库PageRank算法
目录: 定义 计算原理 定义: 假设对象A具有指向它的对象T1 ... Tn.参数d是阻尼系数,取值范围在0和1之间,通常将d设置为0.85.C(A)被定义为从对象A出去的连接数. 对象A的PageR ...
- WordCloud安装
1,下载 https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 2,安装 (window环境安装) 找的下载文件的路径 安装 1 pip inst ...
- 2018.8.15 python中的冒泡法排序
# 给出一个纯数字列表. 请对列表进行排序. # 思路: # 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10 # 2.循环列表. 判断a[i ...