使用临时表的存储过程

下面是一个使用临时表的存储过程例子

USE [JointFrame31_zw]
GO
/****** Object:  StoredProcedure [dbo].[Proc_ZL_GetMonthFlow]    Script Date: 2017/04/05 9:18:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <水狼一族>
-- Create date: <2017.04.05>
-- Description:    <查看全市污染物各月份的排放量情况>
-- TSQL: Proc_ZL_GetMonthFlow
-- =============================================

ALTER PROCEDURE [dbo].[Proc_ZL_GetMonthFlow]

AS
SET NOCOUNT ON
begin
--创建废水临时表
    create table #w(MonitorDate varchar(6),CODFlow numeric(18,6),NH4Flow numeric(18,6))
 --插入废水临时表
    insert into #w
    exec [AutoMonitor].[dbo].Proc_Big_Get_Pollutant_Month_Data_Water
--创建废气临时表
    create table #g(
    MonitorDate varchar(6),
    YCFlow numeric(18,4),
    S02Flow numeric(18,4),
    NOXFlow numeric(18,4)
    )
 --创建废气临时表
    insert into #g
    exec [AutoMonitor].[dbo]. Proc_Big_Get_Pollutant_Month_Data_Gas

    select MonitorDate into #date from #w a union select b.MonitorDate from #g b

    select p.*,isnull(CODFlow,0) CODPercent,isnull(NH4Flow,0) NH4Percent,isnull(YCFlow,0) YCPercent,
    isnull(S02Flow,0) S02Percent,isnull(NOXFlow,0) NOXPercent
     from #date p left join #w a on p.MonitorDate = a.MonitorDate
    left join #g b on p.MonitorDate = b.MonitorDate

    truncate table #w
    drop table #w

    truncate table #g
    drop table #g

    truncate table #date
    drop table #date

end
时间: 2024-08-06 07:50:03

使用临时表的存储过程的相关文章

SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译(recompile)的条件:     - 对查询所引用的表或视图进行更改(ALTER TABLE 和 ALTER VIEW).     - 对执行计划所使用的任何索引进行更改.     - 对执行计划所使用的统计信息进行更新,这些更新可能是从语句(如 UPDATE STA

临时表在存储过程中存放查询结果

先来张图: 看到这样的需求.我们一般会去拼接Sql语句,这样有Sql注入的风险,想到了用数据库做查询.把条件放到一张临时表中.具体代码如下 create proc [dbo].[pro_SelectUserInfo](@sort int,@value varchar(20) ='',@create_time date = '',@sex int) as begin --查询结果放在一个临时表中 IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE

应用临时表的存储过程

CREATE procedure [control].[mp_GetSellerTerminalList_Export] ( @Svalidtime nvarchar(30), @Evalidtime nvarchar(30), @UseStatus nvarchar(30), @ProvinceNo nchar(100), @CityNo nchar(100), @DistributorName nvarchar(100), @OrderType nvarchar(30), @MobileNo

[转]表变量和临时表的比较

本文转自;http://www.cnblogs.com/CareySon/archive/2012/06/11/TableVariableAndTempTable.html 关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么),然后我们通过使用临时表和表变量对其解密. 表变量 表变量在SQL Server 2000中首次被引入,那么,什么是表变量呢?

SqlServer临时表

临时表的使用 什么是临时表 临时表分为两种:本地和全局临时表.本地临时表仅在当前会话中可见:全局临时表在所有会话中都可见. 本地临时表的名称前面有一个编号符 #table_name,而全局临时表的名称前面有两个编号符 ##table_name. 临时表的使用场景 数据二次过滤 数据库中表创建完成之后,对于复杂的查询,可以引入临时表,将数据插入到临时表,然后从临时表查询数据. 在数据库层面缓存数据 建经常使用的数据,插入到临时表,作为缓存使用. 语法 创建临时表 方法一: create table

储存过程嵌套临时表同名引发的BUG?

临时表使用:存储过程嵌套时,均创建了相同名称的临时表. create procedure SP_A ( @i int output )asbegin create table #t ( ta int ); insert into #t ( ta ) values ( convert(int, getdate()) ); select @i=count(0) from #t; print @i; end;gocreate procedure SP_Basbegin create table #t

SQL学习笔记——临时表不同创建方式的区别

问题:在存储过程中使用临时表时,不Create临时表就会报错. 分析了下,总结了临时表创建方式的区别. 创建临时表有两种方法: 方法一 create  table  #临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) create  table  ##临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) 方法二 select  *  into  #临时表名  from 你的表;   select  *  into  ##临时表名  

[MSSQL]表变量和临时表的区别

一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用).定义表变量的语句是和正常使用Create Table定义表语句的子集.只是表变量通过DECLARE @local_variable语句进行定义. 表变量的特征: 表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自

SQL Server中临时表与表变量的区别

2009年02月20日 星期五  19:31 我 们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量.在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们 实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Ser