PostgreSQL存储过程-中标数据链接处理

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/FG24151110876/article/details/96984164
		-- 创建一个存储过程
CREATE OR REPLACE PROCEDURE "来源链接处理"("批次" varchar='xxxxxxxx'::character varying)
 AS $BODY$
 
 DECLARE sqlstring VARCHAR;
 BEGIN
	-- Routine body goes here...
	sqlstring:='DROP TABLE IF EXISTS be_yaopinzhongbiao_url'||批次||';';
	
	RAISE NOTICE '即将执行SQL语句%' ,sqlstring;
	EXECUTE sqlstring;
	sqlstring:='CREATE TABLE be_yaopinzhongbiao_url'||批次||' AS(
	SELECT 
	me_approvaldate,
	me_source,
	me_down
	FROM
	be_yaopinzhongbiao
	GROUP BY
	me_approvaldate,
	me_source,
	me_down
	);';
	
	
	RAISE NOTICE '即将执行SQL语句%' ,sqlstring;
	EXECUTE sqlstring;
	RAISE NOTICE '已创建创建表:be_yaopinzhongbiao_url%', 批次;
END$BODY$
  LANGUAGE plpgsql;
CALL "来源链接处理"('20190702');

 

jdbc链接postgresql的问题。

10-12

想弄一个类,根据传进来的数据选择链接不同的数据库。代码如下,连Oracel成功了。但是连本机的postgre不成功。报错。rn我之前单独写死的一个jdbc连本机的postgreSQL却是成功的,实在找不到原因了,谁帮我看看。rn[code=Java] package com.boco.mortise.hisLog;rnrnimport java.sql.Connection;rnimport java.sql.DriverManager;rnimport java.sql.ResultSet;rnimport java.sql.Statement;rnimport java.util.ArrayList;rnimport java.util.HashMap;rnimport java.util.Map;rnrnpublic class ConnectionToDB rn private String DriverName="";rn private String url=" ";rn private String userName=" ";rn private String password=" "; rn private String sql=" ";rn private Connection conn=null;rn private Statement st=null;rn private ResultSet rs=null;rn private ArrayList hisLogsArray = new ArrayList();rn private static final Map dbDriverManagers=new HashMap()rn /**rn * 定义的一个Hashmap来存放不同类型数据库对应的加载的驱动名。rn */rn private static final long serialVersionUID = 1L;rnrn rn put("access","sun.jdbc.odbc.JdbcOdbcDriver");rn put("mysql","com.mysql.jdbc.Driver");rn put("oracle","oracle.jdbc.driver.OracleDriver");rn put("sqlserver","com.microsoft.jdbc.slqserver.sqlserverdriver");rn put("postgresql","org.postgresql.Driver");rn rn ;rn rn //根据不同的数据库类型选择加载不同的数据库驱动。rn public void setDriverName(DbInformation dbInformation) rn DriverName=dbDriverManagers.get(dbInformation.dbStyle.toLowerCase());rn System.out.println(DriverName);rn rn public String getDriverName() rn return DriverName;rn rn rn rn //设置访问的urlrn public void setUrl(DbInformation dbInformation) rn if(dbInformation.dbStyle.toLowerCase().equals("postgresql"))rn rn //jdbc:postgresql://192.168.2.150:5432/postgresrn //jdbc:postgresql://192.168.2.150:5432/postgresrn // this.url="jdbc:postgresql://"+dbInformation.dbIp+":"+dbInformation.dbPort+"/"+dbInformation.dbName; rn this.url="jdbc:postgresql://localhost/shop";rn System.out.println(url);rn else if(dbInformation.dbStyle.toLowerCase().equals("oracle"))rn rn this.url="jdbc:oracle:thin:@"+dbInformation.dbIp+":"+dbInformation.dbPort+":"+dbInformation.dbName;rn else if(dbInformation.dbStyle.toLowerCase().equals("access"))rn rn this.url="jdbc:oracle:thin:@"+dbInformation.dbIp+":"+dbInformation.dbPort+":"+dbInformation.dbName;rn elsern this.url="";rn rn rn public String getUrl() rn return url;rn rn rn rn //设置用户名rn public void setUserName(DbInformation dbInformation) rn this.userName =dbInformation.userName;rn rn public String getUserName() rn return userName;rn rn rn rn rn //设置sql语句rn public void setSql(DbInformation dbInformation) rn this.sql ="select * from "+dbInformation.dbtableName;rn rn public String getSql() rn return sql;rn rn rn rn //设置passwordrn public void setPassword(DbInformation dbInformation) rn this.password = dbInformation.dbpasswd;rn rn public String getPassword() rn return password;rn rn rn rn public ArrayList GoToDBAndGetTable()rn tryrn //注册驱动。rn Class.forName(DriverName);rn conn=DriverManager.getConnection(url,userName,password);rn st=conn.createStatement();rn rs=st.executeQuery(sql);rn while(rs.next())rn rn// System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)rn// +"\t"+rs.getObject(3)+"\t"+rs.getObject(4));rn rn His_log entry = new His_log();rn His_log.Result2Entry(rs, entry);rn hisLogsArray.add(entry);rn rn catch (Exception e) rn e.printStackTrace();rn return hisLogsArray;rn finallyrnrn if(rs != null) // 关闭记录集 rn try rn rs.close() ; rn catch(Exception e) rn e.printStackTrace() ; rn rn rn if(st != null) // 关闭声明 rn try rn st.close() ; rn catch(Exception e) rn e.printStackTrace() ; rn rn rn if(conn != null) // 关闭连接对象 rn try rn conn.close() ; rn catch(Exception e) rn e.printStackTrace() ; rn rn rnrn rn rn return hisLogsArray;rn rn rn /*rn * //测试rn * public static void main(String[] args) rn HisLogDestination hDestination=new HisLogDestination();rn //System.out.print(hDestination.test().records.get(0).department);rn for (His_log his_log: hDestination.test().records) rn System.out.println(his_log.ip+"uuu"+his_log.department);rn rn rn rn rn */rn public ArrayList query(DbInformation dbInformation)rn rn ConnectionToDB connectionToDB=new ConnectionToDB();rn connectionToDB.setDriverName(dbInformation);rn connectionToDB.setSql(dbInformation);rn connectionToDB.setUrl(dbInformation);rn connectionToDB.setUserName(dbInformation);rn connectionToDB.setPassword(dbInformation);rn hisLogsArray=connectionToDB.GoToDBAndGetTable();rn return hisLogsArray;rn rn rn rn rn public static void main(String args[])rn rn DbInformation db=new DbInformation();rn db.dbIp="localhost";rn db.dbName="root";rn db.dbpasswd="111111";rn db.dbPort="5432";rn db.dbtableName="HIS_LOG";rn db.dbStyle="postgresql";rn //db.gatherGap="23";rn ConnectionToDB conTodb=new ConnectionToDB();rn //conTodb.query(db);rn System.out.println(conTodb.query(db).get(1).department.toString());rn rn rn rn rn rn rnrn[/code]rn报错信息:rnorg.postgresql.Driverrnjdbc:postgresql://localhost/shoprnorg.postgresql.util.PSQLException: FATAL: no PostgreSQL user name specified in startup packetrn at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:275)rn at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:94)rn at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)rn at org.postgresql.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:125)rn at org.postgresql.jdbc3.AbstractJdbc3Connection.(AbstractJdbc3Connection.java:30)rn at org.postgresql.jdbc3.Jdbc3Connection.(Jdbc3Connection.java:24)rn at org.postgresql.Driver.makeConnection(Driver.java:382)rn at org.postgresql.Driver.connect(Driver.java:260)rn at java.sql.DriverManager.getConnection(DriverManager.java:525)rn at java.sql.DriverManager.getConnection(DriverManager.java:171)rn at com.boco.mortise.hisLog.ConnectionToDB.GoToDBAndGetTable(ConnectionToDB.java:102)rn at com.boco.mortise.hisLog.ConnectionToDB.query(ConnectionToDB.java:166)rn at com.boco.mortise.hisLog.ConnectionToDB.main(ConnectionToDB.java:184)rnException in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0rn at java.util.ArrayList.RangeCheck(ArrayList.java:546)rn at java.util.ArrayList.get(ArrayList.java:321)rn at com.boco.mortise.hisLog.ConnectionToDB.main(ConnectionToDB.java:184)rn单独写的jdbc却链接成功:rn[code=Java]package com.boco.jdbcToPostgre;rnrnimport java.sql.Connection;rnimport java.sql.DriverManager;rnimport java.sql.ResultSet;rnimport java.sql.Statement;rnrnrnrnpublic class PostgreSql rn private String url="jdbc:postgresql://localhost/shop";rn private String userName="root";rn private String password="111111";rn private String sql="select * from HIS_LOG";rn private Connection conn=null;rn private Statement st=null;rn private ResultSet rs=null;rn public void Test()throws Exceptionrn tryrn //注册驱动。rn Class.forName("org.postgresql.Driver");rn conn=DriverManager.getConnection(url,userName,password);rn st=conn.createStatement();rn rs=st.executeQuery(sql);rn while(rs.next())rn rn System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)rn +"\t"+rs.getObject(3)+"\t"+rs.getObject(4));rn rn rn catch (Exception e) rn e.printStackTrace();rn finallyrn if(rs!=null)rn rn rs.close();rn rn if(st!=null)rn rn st.close();rn rn if(conn!=null)rn rn conn.close();rn rn rn rn rn rn /* public static void main(String[] args) rn PostgreSql pSql=new PostgreSql();rn tryrn pSql.Test();rn catch (Exception e) rn e.printStackTrace();rn rn */rnrn rnrn[/code]rnrn能给我原因和解决方法吗 论坛

PostgreSQL存储过程介绍

06-21

<p>n PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。n</p>n<p>n  n</p>n<p>n PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。n</p>n<p>n  n</p>n<p>n 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。n</p>n<p>n <br /></p>n<p>n 从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。n</p>n<p>n  n</p>n<p>n <strong>本课程作为PostgreSQL数据库管理一,主要讲解以下内容:</strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n 1.<span style="font-size:9px;">     </span>PostgreSQL 存储过程基本知识n</p>n<p>n 2.<span style="font-size:9px;">     </span>PostgreSQL 用户自定义函数n</p>n<p>n 3.<span style="font-size:9px;">     </span>PostgreSQL 控制结构n</p>n<p>n 4.<span style="font-size:9px;">     </span>PostgreSQL 游标和存储过程n</p>n<p>n 5.<span style="font-size:9px;">     </span>PostgreSQL 索引n</p>n<p>n 6.<span style="font-size:9px;">     </span>PostgreSQL 视图n</p>n<p>n 7.<span style="font-size:9px;">     </span>PostgreSQL 触发器n</p>n<p>n 8.<span style="font-size:9px;">     </span>PostgreSQL 角色、备份和还原n</p>n<p>n 9.<span style="font-size:9px;">     </span>PostgreSQL 表空间管理n</p>n<p>n <br /></p>n<p>n <img src="https://img-bss.csdn.net/201906211032373758.png" alt="" /></p>

PostgreSQL存储过程块结构

06-21

<p>n PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。n</p>n<p>n  n</p>n<p>n PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。n</p>n<p>n  n</p>n<p>n 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。n</p>n<p>n <br /></p>n<p>n 从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。n</p>n<p>n  n</p>n<p>n <strong>本课程作为PostgreSQL数据库管理一,主要讲解以下内容:</strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n 1.<span style="font-size:9px;">     </span>PostgreSQL 存储过程基本知识n</p>n<p>n 2.<span style="font-size:9px;">     </span>PostgreSQL 用户自定义函数n</p>n<p>n 3.<span style="font-size:9px;">     </span>PostgreSQL 控制结构n</p>n<p>n 4.<span style="font-size:9px;">     </span>PostgreSQL 游标和存储过程n</p>n<p>n 5.<span style="font-size:9px;">     </span>PostgreSQL 索引n</p>n<p>n 6.<span style="font-size:9px;">     </span>PostgreSQL 视图n</p>n<p>n 7.<span style="font-size:9px;">     </span>PostgreSQL 触发器n</p>n<p>n 8.<span style="font-size:9px;">     </span>PostgreSQL 角色、备份和还原n</p>n<p>n 9.<span style="font-size:9px;">     </span>PostgreSQL 表空间管理n</p>n<p>n <br /></p>n<p>n <img src="https://img-bss.csdn.net/201906211032373758.png" alt="" /></p>

PostgreSQL 针对空值的处理

06-14

<p>n <span style="font-size:14px;">PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。</span>n</p>n<p>n <span style="font-size:14px;"> </span>n</p>n<p>n <a href="https://baike.baidu.com/item/PostgreSQL/530240"><span style="font-size:14px;">PostgreSQL</span></a><span style="font-size:14px;"> 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。</span>n</p>n<p>n <span style="font-size:14px;"> </span>n</p>n<p>n <span style="font-size:14px;">事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持</span><a href="https://baike.baidu.com/item/%E4%BA%8B%E5%8A%A1"><span style="font-size:14px;">事务</span></a><span style="font-size:14px;">、</span><a href="https://baike.baidu.com/item/%E5%AD%90%E6%9F%A5%E8%AF%A2"><span style="font-size:14px;">子查询</span></a><span style="font-size:14px;">、多版本并行控制系统(</span><a href="https://baike.baidu.com/item/MVCC"><span style="font-size:14px;">MVCC</span></a><span style="font-size:14px;">)、</span><a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%95%B4%E6%80%A7"><span style="font-size:14px;">数据完整性</span></a><span style="font-size:14px;">检查等特性的唯一的一种自由软件的</span><a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F"><span style="font-size:14px;">数据库管理系统</span></a><span style="font-size:14px;">。 Inprise 的 InterBase 以及</span><a href="https://baike.baidu.com/item/SAP"><span style="font-size:14px;">SAP</span></a><span style="font-size:14px;">等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。</span>n</p>n<p>n <span style="font-size:14px;">从技术角度来讲,PostgreSQL 采用的是比较经典的</span><a href="https://baike.baidu.com/item/C%2FS"><span style="font-size:14px;">C/S</span></a><span style="font-size:14px;">(client/server)结构,也就是一个客户端对应一个服务器端</span><a href="https://baike.baidu.com/item/%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B"><span style="font-size:14px;">守护进程</span></a><span style="font-size:14px;">的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由</span><a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8"><span style="font-size:14px;">数据库服务器</span></a><span style="font-size:14px;">提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如</span><a href="https://baike.baidu.com/item/ODBC"><span style="font-size:14px;">ODBC</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/JDBC"><span style="font-size:14px;">JDBC</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/Python"><span style="font-size:14px;">Python</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/Perl"><span style="font-size:14px;">Perl</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/Tcl"><span style="font-size:14px;">Tcl</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/C%2FC%2B%2B"><span style="font-size:14px;">C/C++</span></a><span style="font-size:14px;">,</span><a href="https://baike.baidu.com/item/ESQL"><span style="font-size:14px;">ESQL</span></a><span style="font-size:14px;">等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。</span>n</p>n<p>n <span style="font-size:14px;"> </span>n</p>n<p>n <strong><span style="font-size:14px;">本课程作为PostgreSQL数据库管理之三,主要讲解以下内容:</span></strong>n</p>n<p>n <strong><br /></strong>n</p>n<p>n <span style="font-size:14px;">1.</span><span style="font-size:14px;">     </span><span style="font-size:14px;">PostgreSQL约束讲解和剖析</span>n</p>n<p>n <span style="font-size:14px;">2.</span><span style="font-size:14px;">     </span><span style="font-size:14px;">PostgreSQL数据类型</span>n</p>n<p>n <span style="font-size:14px;">3.</span><span style="font-size:14px;">     </span><span style="font-size:14px;">PostgreSQL的结构管理</span>n</p>n<p>n <span style="font-size:14px;">4.</span><span style="font-size:14px;">     </span><span style="font-size:14px;">PostgreSQL条件表达式和操作</span>n</p>n<p>n <span style="font-size:14px;">5.</span><span style="font-size:14px;">     </span><span style="font-size:14px;">PostgreSQL使用小技巧</span>n</p>n<p>n <br /></p>n<p>n <img src="https://img-bss.csdn.net/201906140548008383.png" alt="" /></p>

没有更多推荐了,返回首页