Oracle和SQLServer的“临时表”应用

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询 阅读详情

Oracle中,

      在复杂的业务逻辑中,我们经常会用到临时表,临时表生成很少的日志,每种数据库又都会对其进行特定的处理,使它很适合保存事务或会话期间的中间结果集。Oracle临时表保存的数据只对当前会话可见,所有会话都看不到其他会话的数据。即使当前会话已经提交了数据,别的会话也看不到。对于临时表,不存在多用户并发问题,因为一个会话不会因为使用一个临时表也阻塞另一个会话。

      Oracle的临时表是从当前登录用户的临时表空间分配存储空间,而在创建时不涉及存储空间的分配。Oracle中的临时表是全局临时表,是和其它表一样应该提前建好的,而不是在存储过程中创建、删除的。 

      Oracle中的临时表有两种一种是事务级别的临时表它在事务结束的时候自动清空记录,另一种是会话级的它在我们访问数据库是的一个会话结束后自动的清空。关于临时表多用户并行不是问题,一个会话从来不会阻止另一个会话使用临时表。即使“锁定”临时表,一个会话也不会阻止其他会话使用它们的临时表。 例子如下:

首先创建一全局临时表(session),

create global temporary table BANKVAL_TBL
(
  BANKNO       VARCHAR2(64),
  BANKNAME     VARCHAR2(64),
  CNTACNTNO    VARCHAR2(64),
  BANKACNTNO   VARCHAR2(64),
  BANKACNTNAME VARCHAR2(64),
  OPENBANKNAME VARCHAR2(64),
  BALANCE      NUMBER,
  QUOTA        NUMBER,
  FLAG         INTEGER,
  ISLEAF       INTEGER
)
on commit preserve rows;

然后,就可以在存储过程中使用了,

CREATE OR REPLACE PROCEDURE Ns_Qry_GetBankVal_New(
 bankno  in varchar2,
 bankacntno varchar2,
 bankacntname varchar2,
 bankSort varchar2,--帐户性质
 bankKind varchar2,--帐户分类
 cur_OUT    IN OUT GLOBALPKG.RCT1)
is
PRAGMA AUTONOMOUS_TRANSACTION;

begin
  execute immediate 'delete from Bankval_TBL';
  if  bankno is not null and bankno <> ' ' then
    insert into Bankval_TBL
    select a.bankno,'(' || a.bankno || ')' || w.bankname as bankname, '(' ||  v.No  ||  ')' ||  v.name as CntAcntNo ,a.AcntNo as No,a.AcntName As Name,a.OpenBankName,a.Balance,a.Quota,1,1
    from vw_bp_account  a left outer join vw_cntacnt v on a.acntNo=v.No inner join bp_bank w on a.bankno=w.bankno
    and (w.bankno = Ns_Qry_GetBankVal_New.bankno OR NVL(Ns_Qry_GetBankVal_New.bankno,' ') = ' ')
    and a.acntno like '%' ||  nvl(bankacntno,'%')  || '%'
    and a.acntname like '%' ||  nvl(bankacntname,'%')  ||  '%'
    order by a.bankno,CntAcntNo ;
  end if;
  insert into Bankval_TBL
        select bankno,bankname,'银行小计','银行小计','(银行小计)','',sum(balance),sum(quota),0,1
        from Bankval_TBL group by bankno,bankname;

  insert into Bankval_TBL
        select '99',' ',' ',' ','总计','',sum(balance),sum(quota),9,1
        from Bankval_TBL where flag=0;

  commit;
   OPEN cur_OUT FOR
   select nvl(bankno,' ') as  bankno,
       nvl(bankname,' ') as bankname  ,
       nvl(CntAcntNo,' ') as CntAcntNo,
       nvl(Bankacntno,' ') as Bankacntno  ,
       nvl(Bankacntname,' ') as Bankacntname,
       nvl(openbankname,' ') as openbankname ,
       nvl(balance,0) as balance,
       nvl(quota,0) as quota ,
       nvl(flag,0) as flag,
       nvl(isleaf,0) as isleaf from  Bankval_TBL order by bankno,CntAcntNo,flag;
end;

SQL Server:

SQL Server的临时表是存储在tempdb中,应该在存储过程中创建或者删掉的。它也分为两种:本地临时表和全局临时表。本地临时表以#开头,仅对当前连接有效,当与SQL Server连接断开时此表即被删除,如果是在存储过程中创建的,则存储过程执行完此表即被删除。当不同的用户创建本地临时表名相同时,SQL Server会自己在每个用户创建的临时表透明的加一下数据后辍(加此后辍是透明的,不影响各个用户程序对此临时表的使用)。因此本地临时表也不会发生并发问题。全局临时表以##开头,对所有会话都可见,只有所有引用该表的会话都断开连接时,才将此表删除。如果是在存储过程中创建的,则调整用此存储过程的会话断开后,此全局临时表即被删除。全局临时表中的数据会被其它会话看到,因此和普通表一样,存在多用户并发问题。
以下是我在SQL Server查询分析器里试验的结果
在查询分析器甲中
创建测试用的表t
        create table t(x int);
  

        命令已成功完成。
向表t中添加三条数据
        insert into t values(1);
        insert into t values(2);
        insert into t values(3);
        (所影响的行数为 1 行)
        (所影响的行数为 1 行)
        (所影响的行数为 1 行)
再创建一个存储过程 tmp_table,使用本地临时表
        create procedure tmp_table
        as
               create table #tmp_local(x int)
               insert into #tmp_local
               select sum(x) from t 
           命令已成功完成。
        exec tmp_table
        (所影响的行数为 3 行)
        select * from #tmp_local
        服务器: 消息 208,级别 16,状态 1,行 1
        对象名 '#tmp_local' 无效。
说明执行完存储过程后本地临时表就被SQL Server自动清除了
在另一个查询分析器乙中
        select * from #tmp_local
        服务器: 消息 208,级别 16,状态 1,行 1
        对象名 '#tmp_local' 无效。
在查询分析器甲中
        drop procedure tmp_table
        命令已成功完成。
将存储过程tmp_table中的临时表改为全局临时表##tmp_global
        create procedure tmp_table
        as
               create table ##tmp_global
               (x int)
               insert into ##tmp_global
               select sum(x) from t
命令已成功完成。
        exec tmp_table
        (所影响的行数为 1 行)
        select * from ##tmp_global
        6
在另一个查询分析器乙中
        select * from ##tmp_global
        6
在查询分析器甲中
        exec tmp_table
        服务器: 消息 2714,级别 16,状态 6,过程 tmp_table,行 3
        数据库中已存在名为 '##tmp_global' 的对象。
在查询分析器乙中
        exec tmp_table
        服务器: 消息 2714,级别 16,状态 6,过程 tmp_table,行 3
        数据库中已存在名为 '##tmp_global' 的对象。
在不同的会话中全局临时表表现的都一样。当把查询分析器甲关闭后,在查询分析器乙中执行:
        select * from ##tmp_global
        服务器: 消息 208,级别 16,状态 1,行 1
        对象名 '##tmp_global' 无效。
        exec tmp_table
        (所影响的行数为 1 行)
        select * from ##tmp_global
        6
说明当在存储过程中创建的全局临时表,在被调用的会话连接被断开后,其创建的全局临时表即被SQL Server自动删除
例子如下:
ALTER PROCEDURE [dbo].[Ns_Fix_CtgryStat]
@fromdate datetime,
@todate datetime,
@Opdate datetime
AS
create table #t (
 CtgryNm char(28) not null,/*资产类别名称*/
 Zcyjqc numeric (28,2) null,/*期初原价*/
 Zcyjqm numeric (28,2) null,/*期末原价*/
 Ljzjqc numeric (28,2) null,/*期初累计折旧*/
 Ljzjqm numeric (28,2) null,/*期末累计折旧*/
 Bqzjl numeric (15,6) null,/*本期折旧率*/
 Bqzje numeric (28,2) null,/*本期折旧额*/
 Zcjzqc numeric (28,2) null,/*期初净值*/
 Zcjzqm numeric (28,2) null /*期末净值*/
)
declare @CtgryNm char(28)/*资产类别名称*/
declare @Zcyjqc numeric (28,2)/*期初原价*/
declare @Zcyjqm numeric (28,2)/*期末原价*/
declare @Ljzjqc numeric (28,2)/*期初累计折旧*/
declare @Ljzjqm numeric (28,2)/*期末累计折旧*/
declare @Bqzjl numeric (15,6)/*本期折旧率*/
declare @Bqzje numeric (28,2)/*本期折旧额*/
declare @Zcjzqc numeric (28,2)/*期初净值*/
declare @Zcjzqm numeric (28,2)/*期末净值*/
declare @count int
declare @orgval numeric (28,2) /*资产原价*/
declare @orgchange1 numeric (28,2) /*资产原价变动1*/
declare @orgchange2 numeric (28,2) /*资产原价变动2*/
declare Ctgry_cursor cursor for
 select CtgryNm from FixCtgry
        where ctgryno in (select distinct(ctgryno) from fixcard where mkcrddt <
=@todate )
/*对各资产类别逐个计算*/
open Ctgry_cursor
fetch next from Ctgry_cursor into @CtgryNm
while @@fetch_status=0
 begin 
         --期初原值
 select @Zcyjqc = isnull(sum(orgval),0) from FixCard
        where  MkCrdDt < @fromdate and CtgryNo = (select CtgryNo from FixCtgry where
CtgryNm=@CtgryNm )
               and (CanclDt is null or cancldt >= @fromdate)
        if @Zcyjqc is null
           set @Zcyjqc = 0
         --期末原值
 select @Zcyjqm = isnull(sum(orgval),0) from FixCard
        where  MkCrdDt <= @todate and CtgryNo = (select CtgryNo from FixCtgry where
CtgryNm=@CtgryNm )
               and ((CanclDt is null) or (cancldt >  @todate))
               --or (cancldt between @fromdate and @todate) )
        if @Zcyjqm is null
           set @Zcyjqm = 0
 /*期初累计折旧和期末累计折旧*/
 select @Ljzjqc=isnull(sum(val1),0) from VW_NsFixdpr
        where
CtgryNm=@CtgryNm and Opdate < @fromdate and Optype='F00001' and (cancldt is null or cancldt >= @fromdate )
       and mkcrddt <  @fromdate
        if @Ljzjqc is null
           set @Ljzjqc = 0
        --其末累计折旧
 select @Ljzjqm=isnull(sum(val1),0) from VW_NsFixdpr
        where
CtgryNm=@CtgryNm and Opdate <= @todate and Optype='F00001' and
         ((cancldt is null) or (cancldt > @todate) )  and  mkcrddt <=  @todate
   --or (cancldt between @fromdate and @todate)) -- or cancldt between @fromdate and @todate
        if @Ljzjqm is null
           set @Ljzjqm = 0
 /* 本期折旧额 */
 select @Bqzje=isnull(sum(val1),0) from VW_NsFixdpr where
CtgryNm=@CtgryNm and  Opdate >= @fromdate and Opdate <= @todate and Optype='F00001'
        if @Bqzje is null
           set @Bqzje = 0
 /* 计算本期折旧率 */
 if month(@todate) <> 12
          if @Zcyjqc <> 0         
             set @Bqzjl = 100 * (@Bqzje/@Zcyjqc)
   else
      set @bqzjl = 0         
 else
          if @Zcyjqm <> 0         
             set @Bqzjl = 100 * (@Bqzje/@Zcyjqm)
   else
      set @bqzjl = 0         
 /*期初净值和期末净值*/
 set @Zcjzqc=@Zcyjqc-@Ljzjqc
 set @Zcjzqm=@Zcyjqm-@Ljzjqm
 /*输入到临时表中*/
 insert #t (CtgryNm,Zcyjqc,Zcyjqm,Ljzjqc,Ljzjqm,Bqzjl,Bqzje,Zcjzqc,Zcjzqm)
  values (@CtgryNm,@Zcyjqc,@Zcyjqm,@Ljzjqc,@Ljzjqm,@Bqzjl,@Bqzje,@Zcjzqc,@Zcjzqm)
 fetch next from Ctgry_cursor into @CtgryNm
 end
close Ctgry_cursor
deallocate Ctgry_cursor
declare @dataqc numeric(15,2)
declare @dataqm numeric(15,2)
declare @bqzj numeric(15,2),@data numeric(15,2)
select @dataqc = isnull(sum(zcyjqc),0),@dataqm = isnull(sum(zcyjqm),0),@bqzj = 100*isnull(sum(Bqzje),0) from #t
if month(@todate) <> 12
begin
  if abs(@dataqc) < 0.01
    set @data =0
  else
    set @data = @bqzj/@dataqc
  insert into #T(CtgryNm,Zcyjqc,Zcyjqm,Ljzjqc,Ljzjqm,Bqzjl,Bqzje,Zcjzqc,Zcjzqm)
  select '合计' as CtgryNm,sum(Zcyjqc),sum(Zcyjqm),sum(Ljzjqc),sum(Ljzjqm),@data,sum(Bqzje),sum(Zcjzqc),sum(Zcjzqm)
  from #T
end
else
  begin
  if abs(@dataqm) < 0.01
    set @data =0
  else
    set @data = @bqzj/@dataqm
  insert into #T(CtgryNm,Zcyjqc,Zcyjqm,Ljzjqc,Ljzjqm,Bqzjl,Bqzje,Zcjzqc,Zcjzqm)
  select '合计' as CtgryNm,sum(Zcyjqc),sum(Zcyjqm),sum(Ljzjqc),sum(Ljzjqm),@data,sum(Bqzje),sum(Zcjzqc),sum(Zcjzqm)
  from #T
end
select CtgryNm,Zcyjqc,Zcyjqm,Ljzjqc,Ljzjqm,Bqzjl,Bqzje,Zcjzqc,Zcjzqm from #t
关于Oracle与SQL Server临时表的几点考虑:
        1、DDL操作无论对于Oracle还是SQL Server都是很大的开销;
        2、写存储过程时大可以利用每种临时表的优点,避免使用缺点及重复做系统已经做了的工作;
        3、慎用临时表和其它大数据量表进行连接查询和修改;
        4、对于有大量数据的临时表,可以对此创建索引;
        5、在SQL Server中对于数据量比较少的,用表变量可以有更好的速度;
        6、对于SQL Server中的全局临时表,创建时要进行相应的策略,避免表名重复;
        7、尽量避免在Oracle临时表中作update操作,那样开销特别大;
        8、在Oracle中,不要把临时表作为一个分解大查询的办法,即拿到一个大查询,把它分解为几个较小的结果集,然后把这些结果集并在一起。这样速度会更慢。


风机叶片小规模振动监测数据集--读取测试 ETH风电叶片缺陷数据集–读取测试 数据简介 提示:这里可以添加本文要记录的大概内容: 结构健康监测是保障重要机电设备、建筑设施健康的重要技术手段。 一、lvm_read包安装 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务 阅读详情

相关推荐

Unity热更实战:用YooAsset+HybridCLR实现小游戏资源与代码双更新(含避坑清单)

本文详细介绍了Unity小游戏开发中如何通过YooAsset与HybridCLR实现资源与代码双热更新方案。内容涵盖环境配置、架构设计、微信小游戏专项优化、热更代码工程化实践及真机调试技巧,帮助开发者解决审核周期长、紧急修复等痛点,提升更新效率与稳定性。

weixin_42520025的博客 502

oracle能不能创建临时表,Oracle创建临时表

Oracle 存储过程中不像SQLServer 中 在存储过程中用#就可以创建临时表,用来缓存需要处理的数据。Oracle主要需要物理创建临时表结Oracle 存储过程中不像SQLServer 中 在存储过程中用#就可以创建临时表,,用来缓存需要处理的数据。Oracle主要需要物理创建临时表结构,用到global temporary table 关键字。语法如下:-- Create tablecr...

weixin_35866747的博客 383

CMOS的宽/长比、传输门与三态门、锁存器与触发器、简单版图、竞争与冒险

目录 1.CMOS的宽长比 2.传输门与三态门 传输门 三态门 3.锁存器与触发器 3.1RS锁存器[3] 3.2D锁存器 3.3D触发器 4.简单CMOS器件的版图 5.竞争与冒险 1.CMOS的宽长比 关于COMS原理及结构图可以参考[1]COMS原理及门电路设计. 栅在源漏方向的长度称作栅的长L,垂直方向称为栅的宽W,如图1中NMOS的版图。 图1 以MOS管...

king阿金 1万+

Oracle两种临时表的创建与使用详解

ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。 分类: 1.会话级临时表 会话级临时表是指临时表中的数据只在会话生命周期之中

u013178480的博客 5919

Embarcadero Dev-C++ 6.3安装教程【保姆级】

Embarcadero Dev-C++ 6.3安装教程,保姆级教程~

Thebest_jack的博客 1万+

Ferry工单平台部署

ferry工单平台部署

运维求生之路 1897

[转]oracle临时表相关知识

回复: 临时表存放在哪儿? DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the tempo...

weixin_30340819的博客 185

SAP中成本估算没有找到工艺路线消息处理实例

在针对成品的标准成本核算处理过程中,系统中会经由设定好的策略来收集成品相关成本组成,最终计算出产成品的标准成本。关于成本组成,可以归纳为三个基本要素,料,工,费。即标准成本就是要知道,生产一件成品,需要消耗多少钱的原材料?消耗多少钱的人工?以及其它的间接消耗? 某日,接到CO同事的反馈,在用CK11N做产成品标准价格核算时,提示没有工艺路线确定,但该消息为绿灯,可以通过。基于业务上的谨慎,提出分析。 从提示可以看出问题与工艺路线有关。因为,成品工艺路线中设定有成品生产所耗工时,所以,在计算产成品标准

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6279

Oracle视图和临时表的区别,ORACLE临时表和SQLSERVER临时表异同

SQL SERVER临时表临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。[@more@]本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创...

weixin_31363631的博客 376

保姆级教程:在iQuant平台从零写一个Python量化策略(附完整代码示例)

本文提供了一份详细的iQuant平台Python量化策略开发教程,从环境准备到策略实现、回测优化,再到实盘运行,每个步骤都配有完整代码示例和常见问题解决方案。适合量化交易新手快速上手,掌握双均线策略等核心开发技巧。

weixin_42783709的博客 479

把 SAP 配置当成一张地图:用 IMG 把实施、变更与治理串成一条清晰的路

摘要 SAP IMG(Implementation Guide)是SAP实施的核心导航体系,它将客户需求转化为系统配置,提供结构化路径和文档化支持。IMG不是简单的菜单树,而是包含业务落地路径、标准化配置活动和文档化知识的实施语言。通过三种视图(Reference、Enterprise、Project)解决不同管理问题,其中Project IMG尤其重要,可管理项目范围、分工和进度。实际工作中应通过SPRO事务码访问IMG,将探索与执行分开管理。案例显示,跨国企业通过Project IMG可有效控制组织架构

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 230

SQL临时表

临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。 临时表有两种类型: 本地临时表 以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表,链接断开时临时表即被删除(本地临时表为创建它的该链接的会话所独享)或者这样说局部临时表是...

aoluan2964的博客 764

西门子G120变频器在立体仓库堆垛机应用参数设置

本文详细介绍了G120 CU240E及CU250S变频器的参数设置流程。主要内容包括:1)快速调试步骤,从新建项目、扫描节点到设置电机类型、负载类型等参数;2)抱闸参数设置方法;3)参数下载异常时的处理方案。重点说明了通过STARTER软件进行向导式调试的完整过程,包括电机铭牌参数输入、识别方式选择等关键环节,并提示了通讯连接注意事项。当下载失败时,提供了通过导入导出项目文件解决问题的具体方法。

xdpcxq的专栏 863

sql 临时表 oracle,临时表在sqlserver和oracle中的异同点

1、 在创建时的异同。SQL SERVER数据库的临时表,是在实际需要时创建的。具体的来说,可以利用SELECT语句与CREAT语句创建临时表。如可以利用SELECT *INTO #USER_TEMP FROMUSER;通过这条语句就可以在需要的时间创建一张临时表。除此之外,还可以利用CREATE语句,在需要的时候创建临时表。而ORACLE数据库,是在数据库系统初始化的过程中,就需要建立临时表。也...

weixin_39729840的博客 251

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SqlServer和Oracle临时表生命周期

SqlServer: 局部临时表#temp_table: 只在当前会话结有效。会话终止则生存终止。 根据session不同开辟不一样的内存存放数据。 相同session的用户可以使用同一张临时表,只能create table 一次。 不同session建的临时表,即使表名相同,指向的内存也是不一样的,互相内容不可见。 全局临时表##temp_table: 顾名思义,不同的ses...

weixin_33922672的博客 196

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

跨越Oracle和MSSQL关系数据库开发 -- 06 临时表

1. 概述在编写存储过程时,我们经常用到临时表。临时表可以简化查询语句,能作为计算的中间结果,有时还能减少计算量,提高效率。但是Oracle和MSSQL在临时表的使用上存在较大差异。尤其对于从MSSQL转向Oracle的开发人员,一开始往往对这种差异难以接受。本文将详细介绍MSSQL和Oracle的临时表用法,并介绍不同数据库的差异和一些常用技巧。 2. 在MSSQL中使用临时

seafer的专栏 1293

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Oracle临时表和SQL Server临时表的…

本文我们主要介绍了Oracle数据库建立临时表的相关知识以及和SQL Server临时表的不同点的对比。 Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。 1.简介 Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临

javazilu的专栏 470

全局临时表生命周期oracle,SqlServer和Oracle临时表生命周期

SqlServer:局部临时表#temp_table:只在当前会话结有效。会话终止则生存终止。根据session不同开辟不一样的内存存放数据。相同session的用户可以使用同一张临时表,只能create table 一次。不同session建的临时表,即使表名相同,指向的内存也是不一样的,互相内容不可见。全局临时表##temp_table:顾名思义,不同的session可以使用同一块内存。但是其...

weixin_42136477的博客 747

SQL Server 临时表 与 Oracle 临时表

 SQL Server 临时表 与 Oracle 临时表1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语

olony的专栏 1846

SQLSERVER转ORACLE之临时表的运用

我们首先需要的是搞清楚的是两个数据库之间临时表的本质的区别.   1:SQLSERVER所使的临时表为内存表.而ORACLE所使用的表为实体表   2: 速度之前的比较就目前的读书速度而言,内存写与磁盘写的速度相差1W倍。显而以见SQLSERVER的速度明     显很就快得多   3:性能方面从2得之就临时表而言SQLSERVER的性能就明显高手ORACLE。   (网上也有很详细的介绍说明所以不做详细的说明) 从上述我们可以看出临时表而言SQLSERVER的优越性明显比ORACLE高。也许这个时候有人就

a35031630的专栏 630

Oracle视图和临时表的区别,[转]SQL Server 临时表 与 Oracle 临时表的区别

SQL Server 临时表 与 Oracle 临时表的区别1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语句组成以第一个可...

weixin_34107049的博客 359

Oracle视图和临时表的区别,对比Oracle临时表和SQL Server临时表的不同点

Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。1.简介Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚...

weixin_29006187的博客 530

Oracle 临时表用法

ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法。 和一些其他的关系型数据库的临时表不同,当你在oracle数据库中创建一个临时表时,您将创建一个静态表的定义。临时表在数据字典中描述的是一种持久性对象,但是是空的,直到您的会话数据插入到表中。临时表分为SE...

junmail的专栏 190

Oracle Temporary Tables临时表

<br />Temporary Tables临时表<br />1简介<br />   ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,<br />   或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,<br />   但是临时表的结构以及元数据还存储在用户的数据字典中。<br />   临时表只在oracle8i以及以上产品中支持。<br />2

MA-DBA 5092

Oracle、SqlServer、MySql临时表小结

  1、Oracle临时表 Oracle临时表分为两种,且使用前必须先创建好结构。 会话级: 会话间数据不能共享;数据在当前会话有效(无视事物),只有断开链接才会删除数据;断开时只清空数据不删除表结构; create global temporary table temp_tbl(col_a varchar2(30)) on commit preserve rows; 事务级: ...

万丈阳光 279

sqlserver,oracle和DB2的临时表概述

MS SQLSERVERSQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。临时表有两种类型: 本地临时表:本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft S

2445
上一篇: Oracle和SQLServer分别使用函数和存储过程返回结果集
下一篇: SQLServer中查找含有某文本的某类型文件
lb_mail
博客等级 码龄17年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值