`
lovejuan1314
  • 浏览: 342797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单的Postgresql RETURN NEXT 应用

阅读更多
一个简单的Postgresql的函数,只是简单的列出用户输入时间段的每一天,所以想试试用plsql函数来实现.. 这个要返回的是一个列表,就如select * from table一样,所以选择RETURN NEXT


// 先创建一个表
CREATE TABLE dtList (dtvalue date);

//创建一个函数,该函数返回一段时间内的天数
CREATE OR REPLACE FUNCTION getDateList(IN startDt TIMESTAMP,IN endDt TIMESTAMP) RETURNS SETOF dtList AS
$BODY$
DECLARE
  v_daysNo integer;
  v_sql    varchar;
  v_list   dtList%ROWTYPE;
BEGIN
    EXECUTE 'TRUNCATE TABLE dtList';
	SELECT (endDt::date - startDt::date) INTO v_daysNo;
	RAISE NOTICE 'The total number is,%',v_daysNo;
	--EXECUTE 'CREATE TABLE dtList (dtvalue date)';
	FOR i IN 0..v_daysNo LOOP
	  EXECUTE 'INSERT INTO dtList  '||' SELECT ('''||startDt||'''::date + '||i||' )';
    END LOOP;
    
    FOR v_list IN SELECT dtvalue FROM dtList
    LOOP
    	RETURN NEXT v_list;
    END LOOP;
	RETURN;
END
$BODY$
LANGUAGE plpgsql;

//执行一下看看结果吧
select * from getDateList('2008-06-01','2008-06-30');


// Result 
dtvalue
------------------
"2008-06-01"
"2008-06-02"
"2008-06-03"
"2008-06-04"
"2008-06-05"
"2008-06-06"
"2008-06-07"
"2008-06-08"
"2008-06-09"
"2008-06-10"





PS : 如果时间段很长的话,该函数的效率肯定底下,因为它只是简单的循环.当然,你可以用任何程序特别简单的来处理此类问题, 只是测试和运用postgres的RETURN NEXT.
分享到:
评论

相关推荐

    java web操作数据库

    在这个简单实例中,我们将专注于使用Java Web技术栈来操作PostgreSQL数据库。PostgreSQL是一种强大的开源对象关系数据库系统,它以其高度的稳定性和丰富的功能集而受到广大开发者的青睐。在Java Web环境中,我们通常...

    esql.zip_JavaBean 访问 数据库_postgresql

    在Java应用中,我们可以使用JDBC(Java Database Connectivity)API来连接和操作PostgreSQL数据库。JDBC提供了统一的接口,使得Java程序可以连接不同的数据库系统。 要实现JavaBean访问PostgreSQL数据库,首先需要...

    Linux下在QT中访问pgsql数据库

    Qt是一个跨平台的应用程序开发框架,而PostgreSQL则是一个强大的开源对象关系数据库系统。结合两者,我们可以构建高效、可靠的数据库驱动的应用程序。 首先,让我们从系统安装开始。在CentOS 7.2上,你需要确保系统...

    C语言中使用ecpg访问Postgresql数据库

    对于需要与PostgreSQL数据库进行交互的C语言应用程序来说,`ecpg`(Embedded PostgreSQL)提供了一种有效的方法来实现这一目标。`ecpg`允许开发者将SQL语句直接嵌入到C语言代码中,并通过预处理机制将它们转换为标准...

    java-postgresql:Java中的Postgresql项目

    PostgreSQL提供了名为"postgresql-jdbc"的JDBC驱动,使得Java开发者可以方便地在Java应用中使用PostgreSQL。 首先,你需要在项目中引入PostgreSQL的JDBC驱动。这可以通过Maven或Gradle等构建工具完成。例如,在...

    开源项目-jackc-pgx.zip

    总的来说,Jackc-PGX作为PostgreSQL的Go语言客户端库,为开发者提供了强大而灵活的工具,不仅简化了与PostgreSQL的交互,还提升了开发效率和应用性能。其开源性质使得它能够持续改进和适应不断变化的开发需求,为Go...

    pb全角转半角

    以下是一个简单的示例代码片段,演示了如何在PowerBuilder中实现全角转半角的转换: ```pb Function String Full2Half(String fullStr) Long i, len String halfStr = "" len = Len(fullStr) For i = 1 To len...

    koa-start:我的 koa 应用程序的起点

    return async (ctx, next) => { const start = new Date(); await next(); const ms = new Date() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }; } ``` 7. **依赖管理与安装** Koa-...

    Pyqt5项目加图片打包教程加数据库操作附源码.rar_数据库压缩

    PyQT5通过Qt库提供了QSqlDatabase模块,使得与数据库的交互变得简单。以下是一个基本的SQLite数据库操作示例: ```python import sqlite3 from PyQt5.QtCore import QCoreApplication, QSqlDatabase def create_...

    Node.js:开启全栈开发的钥匙.pdf

    对于关系型数据库(如 MySQL、PostgreSQL),可以使用 Sequelize 等 ORM 框架;对于非关系型数据库(如 MongoDB),则可以使用 Mongoose 等库。这些工具提供了丰富的 API 和查询方法,使得数据库操作变得简单高效。 ...

    HCIP-GaussDB for DWS题库.docx

    20. **RETURN NEXT与RETURN QUERY**: - 不适用于存储过程,可能需要其他返回机制。 这些知识点构成了HCIP-GaussDB for DWS认证考试的核心内容,帮助考生理解GaussDB(DWS)数据库系统的设计、管理和应用。

    androidJDBC

    然而,有些场景下,开发者可能需要与远程MySQL、PostgreSQL等关系型数据库进行交互,这时就可以利用JDBC。本文将详细介绍如何在Android应用中实现JDBC,以便访问远程数据库。 1. **引入JDBC驱动** 要使用JDBC,...

    qt连接数据库qt连接数据库

    首先,Qt提供了QSqlDatabase类来管理和操作数据库,它支持多种数据库系统,如SQLite、MySQL、PostgreSQL等,通过QDBDriverPlugin插件机制实现。要连接数据库,你需要先包含必要的头文件,如`#include <QSqlDatabase>...

    struts_1.2的JDBC驱动

    对于其他数据库,如Oracle或PostgreSQL,也需要对应的驱动包。 在配置Struts 1.2以使用JDBC驱动时,我们需要在struts-config.xml文件中定义数据源。数据源是一个对象,它封装了数据库连接的信息,如URL、用户名和...

    Qt-examples-2-data-base.zip_QT编程_qt 数据库_qt 数据库操作

    Qt支持多种数据库,如SQLite、MySQL、PostgreSQL等,通过QSqlDatabase类进行连接管理。 2. **数据库连接**:使用`QSqlDatabase::addDatabase()`静态方法创建一个数据库连接。例如,连接SQLite数据库: ```cpp ...

    使用java语言编写的数据库连接池,实现数据库与jsp文件的连接.zip

    在实际应用中,根据需求,可以选择MySQL、Oracle、PostgreSQL等更强大的关系型数据库。 总之,这个项目展示了如何在Java环境中使用数据库连接池(如HSQLDB)与JSP协作,以高效、稳定的方式处理数据库操作。开发者...

    基于Express框架的博客系统

    然后,创建一个简单的Express应用: ```javascript const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000, () => { ...

    qt对数据库的增删改查简单数据库

    首先,Qt中的SQL模块提供了一个统一的接口,可以与多种数据库管理系统(如SQLite、MySQL、PostgreSQL等)进行交互。在本例中,我们使用的数据库是SQLite,它是一个轻量级的、无服务器的、自包含的数据库引擎,非常...

    hibernate实现递归查询

    如果你使用的是支持CTE的数据库(如PostgreSQL),可以通过创建一个存储过程或者使用HQL的`WITH`子句来实现。 4. **使用缓存** 在大型项目中,考虑到性能,可以考虑使用Hibernate的缓存机制。将查询结果缓存起来,...

Global site tag (gtag.js) - Google Analytics