当前位置:  数据库>其它
本页文章导读:
    ▪列转行-行列转换      有多种实现方式: wmsys.wm_concat函数 也可以用decode函数实现. 11g可以 使用pivot 存储过程实现   eg: 我现在的表如下: 产品名称    销售额  季度 奶酪      .........
    ▪java 调用mysql的存储过程(简单示例)      首先我在mysql的test数据库里定义了一个student表: create table student4( id   int   primary key, sanme char(5) ); 插入几个数据做测试用: inset into student values(1,'mayi'); inset into student values(2,.........
    ▪Oracle Flashback之flashback drop      闪回删除表(dropped tables): 语法:FLASHBACK TABLE table_name TO BEFORE DROP [RENAME TO new_name]; 在Oracle 10g中,Flash back家族分为以下成员: Flashback Database Flashback Drop Flashback Table Flashback Query(分Flashback Query,F.........

[1]列转行-行列转换
    来源: 互联网  发布时间: 2013-11-07

有多种实现方式:
wmsys.wm_concat函数
也可以用decode函数实现.
11g可以 使用pivot
存储过程实现

 

eg:

我现在的表如下:

产品名称    销售额  季度
奶酪          50     第一季度
奶酪          60     第二季度
啤酒          50     第二季度
啤酒          80     第四季度
。。。
。。。
想转换成如下格式
产品名称 第一季度销售额 第二季度销售额 第三季度销售额 第四季度销售额
奶酪          50               60           0              0
啤酒           0               50           0              80

 

答案:

01.最佳答案oracle下可以用函数decode处理: 
02. 
03.select 产品名称, 
04.sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额, 
05.sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额, 
06.sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额, 
07.sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额, 
08.from 表名  
09.group by 产品名称;

 

或者:

select 产品名称,  wmsys.wm_concat(第一季度销售额),wmsys.wm_concat(第二季度销售额),wmsys.wm_concat(第三季度销售额),wmsys.wm_concat(第四季度销售额) from test group by 产品名称

 其他方式大家自己去研究.

下次会谈一下行转列的问题.

作者:it_man 发表于2013-1-6 9:56:13 原文链接
阅读:6 评论:0 查看评论

    
[2]java 调用mysql的存储过程(简单示例)
    来源: 互联网  发布时间: 2013-11-07

首先我在mysql的test数据库里定义了一个student表:

create table student4(

id   int   primary key,

sanme char(5)

);

插入几个数据做测试用:

inset into student values(1,'mayi');

inset into student values(2,'mayi');

inset into student values(3,'mayi');

 

建立存储过程:

in 型:

delimiter //

create procedure demo_in(in p_in int)

begin

select p_in;

set p_in=2;

select p_in;

end;

//

delimiter ;

 

 

java测试代码:

 CallableStatement callstatement = conn.prepareCall("call demo_in(?)");//conn,数据库连接


 callstatement.setInt(1, 1);//设置第一个参数


callstatement.execute();//执行

 

conn.close();//关闭连接

 

 

 

out型:

 

delimiter //

create procedure demo_out(out s int)

begin

select count(*) into s from student;

end

//

delimiter ;

 

java测试代码:

   CallableStatement callstatement = conn.prepareCall("call demo_out(?)");


   callstatement.registerOutParameter(1, java.sql.Types.INTEGER);//注册存储过程的out型参数类型;使用之前必须注册;


   callstatement.execute();//执行


   System.out.println(callstatement.getInt(1));//获得存储过程的输出参数


   conn.close();//关闭连接


总结:  先在数据库中建立存储过程,然后获得数据库连接conn后,生成CallableStatement对象,执行相应的操作。

看过的几篇文章:保留下来,下次记忆模糊了,在复习一下!

Java对存储过程的调用方法

java执行存储过程

 

作者:caiwenfeng_for_23 发表于2013-1-6 13:37:01 原文链接
阅读:0 评论:0 查看评论

    
[3]Oracle Flashback之flashback drop
    来源: 互联网  发布时间: 2013-11-07

闪回删除表(dropped tables):
语法:FLASHBACK TABLE table_name TO BEFORE DROP [RENAME TO new_name];


在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop

Flashback Drop 是从Oracle 10g 开始出现的, 用于恢复用户误删除的对象(包括表,索引等), 这个技术依赖于Tablespace Recycle Bin(表空间回收站),这个功能和windows的回收站非常类似。这个功能和数据库闪回没有关系,和flashback参数没有关系,表也不要求row movement.Flashback 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。故使用SYS 或者SYSTEM用户登陆时,show recyclebin 为空。
1. Tablespace Recycle Bin
从Oracle 10g 开始, 每个表空间都会有一个叫作回收站的逻辑区域,当用户执行drop命令时, 被删除的表和表的关联对象( 包括索引, 约束,触发器,LOB段,LOB index 段) 不会被物理删除, 这些对象先转移到回收站中,这就给用户提供了一个恢复的可能。初始化参数recyclebin 用于控制是否启用recyclebin功能,缺省是ON, 可以使用OFF关闭。
SQL> show user
USER is "HR"

SQL> show parameter recyclebin

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      on
 
禁用该功能:
SQL> alter system set recyclebin=off;
SQL> alter system set recyclebin=on;
SQL> alter session set recyclebin=off;
SQL> alter session set recyclebin=on;
禁用后删除的对象将直接删除,不会写到recyclebin中,当然在删除时,指定purge 参数,表也将直接删除,不会写到recyclebin中。
 
表空间的Recycle Bin 区域只是一个逻辑区域,而不是从表空间上物理的划出一块区域固定用于回收站,因此Recycle Bin是和普通对象共用表空间的存储区域,或者说是Recycle Bin的对象要和普通对象抢夺存储空间。当发生空间不够时,Oracle会按照先入先出的顺序覆盖Recycle Bin中的对象。也可以手动的删除Recycle Bin占用的空间。
 
1). Purge tablespace tablespace_name : 用于清空表空间的Recycle Bin
2). Purge tablespace tablespace_name user user_name: 清空指定表空间的Recycle Bin中指定用户的对象
3). Purge recyclebin: 删除当前用户的Recycle Bin中的对象
4). Purge dba_recyclebin: 删除所有用户的Recycle Bin中的对象,该命令要sysdba权限
5). Drop table table_name purge:  删除对象并且不放在Recycle Bin中,即永久的删除,不能用Flashback恢复。
6). Purge index recycle_bin_object_name: 当想释放Recycle bin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来缓解空间压力。 因为索引是可以重建的。


下面是Flashback Drop 实例操作,我用的HR用户登陆的,注意我的hr是拥有DBA角色的权限的。

实验一:
此时我 SQL> show recyclebin里面空的,即没有被drop的表。

创建一个测试表
SQL> create table emp as select * from employees;

Table created.

 为测试表创建一个主键索引
SQL> alter table emp add constraint EMP_EMP_ID_PK_TEST primary key(employee_id);

Table altered.

查看一下该表的存储信息。
SQL> select file_id,block_id,blocks from dba_extents where segment_name='EMP' and owner='HR';

   FILE_ID   BLOCK_ID     BLOCKS
---------- ---------- ----------
         4        385          8

我drop了emp表,recyclebin里有EMP备删除的信息了。
SQL> drop table emp;

Table dropped.

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP              BIN$0fkSqpkZFT/gQKjAyFwRDA==$0 TABLE        2012-12-29:15:00:01


SQL> select segment_name,blocks from user_segments where segment_name='BIN$0fkSqpkZFT/gQKjAyFwRDA==$0';

SEGMENT_NAME                                                                          BLOCKS
--------------------------------------------------------------------------------- ----------
BIN$0fkSqpkZFT/gQKjAyFwRDA==$0                                                             8

EMP表被drop后,从下面的信息可以看出他的空间是被释放了。
SQL> select * from dba_free_space where file_id=4 and block_id=385;

TABLESPACE_NAME                   FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
USERS                                   4        385      65536          8            4

闪回删除表
SQL> flashback table emp to before drop;

Flashback complete.

recyclebin没有了信息
SQL> show recyclebin
EMP表成功闪回
SQL> select count(*) from emp;

  COUNT(*)
----------
       107
从下面可以看出主键所有页是被闪回了,只是名字没有更改
SQL> select index_name from user_indexes where table_name='EMP';

INDEX_NAME
------------------------------
BIN$0fkSqpkYFT/gQKjAyFwRDA==$0

SQL> alter index "BIN$0fkSqpkYFT/gQKjAyFwRDA==$0" rename to "EMP_EMP_ID_PK_TEST";

Index altered.
再次查看,名字改过来了,一切和一开始一样了。
SQL> select index_name from user_indexes where table_name='EMP';

INDEX_NAME
------------------------------
EMP_EMP_ID_PK_TEST

实验二:
下面在以T表为例子来演示:
如果一个表被drop后,有重新建立了一个同名的表,如果再想闪回被删除的表,此时就需要重命名。
SQL> create table T as select * from employees;

Table created.

SQL> drop table T;

Table dropped.

SQL> create table T as select * from employees;

Table created.

出错了,系统提示该表名已经存在,所以需要重新给个名字闪回即可
SQL> flashback table T to before drop;
flashback table T to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object


SQL> flashback table T to before drop rename to T2;

Flashback complete.

SQL> select count(*) from T2;

  COUNT(*)
----------
       107


实验三:
如果一个表被drop掉了,而且还在recyclebin里,则我们可以直接对recyclebin里的表做如下操作:
SQL> drop table T;

Table dropped.


SQL> set linesize 180
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$0fkSqpkqFT/gQKjAyFwRDA==$0 TABLE        2012-12-29:15:21:40

可以直接通过如下查询表信息
SQL> select count(*) from "BIN$0fkSqpkqFT/gQKjAyFwRDA==$0";

  COUNT(*)
----------
       107

可以直接查看表的结构
SQL> desc "BIN$0fkSqp

    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
linux iis7站长之家
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3