`

Sqlserver: 使用临时表和表变量

阅读更多
USE [SqlserverDBName]
GO

/***********************************************************
*DataServer: XXX.XXX.XXX.XXX
*DataBase:  SqlserverDBName
*Name:      UP_YourSqlserverDBName
*Function:  UP_YourSqlserverDBName test
*Input:	 
*Output:	
*Creator: greatwqs
*Updated: 2012-08-21 temp table test
***********************************************************/
CREATE PROCEDURE [dbo].[UP_TEST_TEMP_TABLE]
(	
     @param1 varchar(MAX),
     @param2 varchar(2)
)
AS
BEGIN
     SET NOCOUNT ON
     -- 不显示执行后的控制台信息
     
     -- Create Temp Table 'TAB_XXXXXXXXXXXX'
     IF OBJECT_ID(N'tempdb.dbo.#TAB_XXXXXXXXXXXX', N'U') IS NOT NULL
     BEGIN
          DROP TABLE #TAB_XXXXXXXXXXXX
          -- use temp table not reference dbo.tabxxxx, del dbo
     END
       
     CREATE TABLE #TAB_XXXXXXXXXXXX(
          [TransID] [int] IDENTITY(1,1) NOT NULL,
          ItemName   char(25) NOT NULL,
          CONSTRAINT [PK_TAB_XXXXXXXXXXXX] PRIMARY KEY CLUSTERED 
          (
               [TransID] ASC
          ) ON [PRIMARY]
     )ON [PRIMARY]  
     
     -- INSERT DATA TO TEMP TABLE
     WHILE(@param1 = 'ABCDEFG')  
     BEGIN
          INSERT INTO #TAB_XXXXXXXXXXXX(ItemName)   
          VALUES ('ITEM_NAME') 
           
     END
     
     SELECT ItemName FROM dbo.#TAB_XXXXXXXXXXXX
     -- 临时表可以不使用WITH(NOLOCK)
     
     DROP TABLE #TAB_XXXXXXXXXXXX
END

GO

 

在SQL SERVER存储过程中, 如果数据较少200条, 也可以使用表变量:

BEGIN
    -- 1. 声明
    DECLARE @V_Repeated  TABLE(ProductID INT)
    
    -- 2. 插入数据
    INSERT INTO @V_Repeated(ProductID)   
    SELECT TOP (50) ProductID
    FROM DBO.Products WITH(NOLOCK)
    
    -- 3. 使用表变量数据
    UODATE DBO.XXXXXXX
    SET  XXXX='VALUE1'
    WHERE PRODUCT_FK IN (
        SELECT TOP 50 ProductID
        FROM @V_Repeated
    )
END

 

 

0
3
分享到:
评论

相关推荐

    SQLServer中临时表与表变量的区别

    资源名称:SQLServer中临时表与表变量的区别内容简介: 本文档主要讲述的是SQLServer中临时表与表变量的区别;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看。资源截图: 资源太大,传百度网盘了,...

    sqlserver 循环临时表插入数据到另一张表

    sqlserver 循环临时表插入数据到另一张表 -- 声明变量 DECLARE @SupCode as varchar(100), @ProdCode as varchar(50), @PackLayer as varchar(50), @CodeStatus as varchar(50), @ProductId as varchar(50), @...

    SQLServer中临时表与表变量的区别分析

    在SQL Server中,临时表和表变量是两种用于暂存数据的结构,它们在数据库操作中扮演着重要的角色。理解它们的区别有助于优化存储过程和提高性能。 临时表类似于永久表,但它们存在于Tempdb系统数据库中,仅在创建它...

    SQLServer中临时表与表变量的区别.docx

    ### SQL Server 中临时表与表变量的区别 #### 一、临时表 临时表与常规的永久表非常相似,主要区别在于其创建位置和生命周期。在SQL Server中,临时表是在`tempdb`数据库中创建的,这意味着它们仅在这个特定会话...

    SQL SERVER临时表的使用.pdf

    SQL Server的临时表是数据库管理中非常实用的工具,它们被用于存储临时数据,供当前会话或多个会话在特定范围内使用。...了解并熟练使用临时表可以显著提升SQL Server数据库管理的效率和代码的可读性。

    sql临时表相关介绍

    5. **命名限制**:本地临时表的名称长度不能超过116个字符,因为SQL Server会在内部添加数字后缀以区分不同用户的表。 6. **存储位置**:所有的临时表都存储在tempdb系统数据库中。 7. **并发问题**:在多用户环境...

    [sql server] SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL

    本文将介绍 CTE 的基本概念、语法和使用方法,并与传统的子查询和表变量相比,看看 CTE 是如何简化嵌套 SQL 的。 一、嵌套 SQL 语句的问题 嵌套 SQL 语句是指在一个 SELECT 语句中包含另一个 SELECT 语句,这可以...

    SQL Server遍历表中记录的2种方法(使用表变量和游标)

    本文将深入探讨两种方法:使用表变量和使用游标。 首先,我们来看如何通过表变量来遍历记录。表变量在SQL Server中是一种临时存储数据的结构,它与临时表相似但作用范围更小,仅限于当前批处理或存储过程。以下是一...

    SQL Server 表变量和临时表的区别(详细补充篇)

    在SQL Server中,表变量和临时表都是用来存储数据的临时结构,但它们在使用上存在显著的区别。本文将详细探讨这两个概念。 首先,我们来看看表变量。表变量是在SQL Server 2000中引入的新特性,它允许在批处理语句...

    SQL SERVER临时表的使用.docx

    在提供的代码段中,展示了如何使用变量、动态SQL和存储过程来处理临时表: ```sql DECLARE @Wokno VARCHAR(500), @Str NVARCHAR(4000), @Count INT, @i INT; SET @i = 0; SELECT @Count = COUNT(DISTINCT(Wokno)) ...

    SQL SERVER临时表的语法.docx

    SQL Server中的临时表是...正确地使用局部和全局临时表,以及根据需求选择表变量,能够优化数据库的性能并提高代码的可维护性。在实际应用中,应根据数据量、使用范围和会话生命周期来决定何时使用哪种类型的临时表。

    SQL Server如何通过创建临时表遍历更新数据详解

    在SQL Server中,遍历和更新大量数据时,通常有两种主要方法:游标和使用临时表。本篇文章将重点探讨如何通过创建临时表来遍历并更新数据,以避免使用游标带来的性能损耗和复杂性。 首先,游标虽然直观,但其缺点...

    sql server 临时表 查找并删除的实现代码

    在SQL Server中,临时表是一种用于存储临时数据的结构,它们在特定的会话或所有会话中(根据类型)存在,并在不再需要时自动删除。临时表分为两种类型:本地临时表(以单个井号`#`开头)和全局临时表(以双井号`##`...

    SQL SERVER临时表的语法.pdf

    SQL Server的临时表是数据库操作中非常实用的工具,它们用于存储临时数据,尤其是在复杂的查询...在实际应用中,根据数据量、生命周期和可见性需求,明智地选择临时表或表变量,可以显著提高SQL Server应用程序的性能。

    sqlserver 临时表的用法

    在SQL Server中,临时表是一种非常实用的工具,特别是在处理复杂查询和大量数据操作时。它们可以用来暂存中间结果,提升查询效率,并且有助于提高程序的可读性。临时表分为两种类型:用户临时表(本地临时表)和系统...

    sql server 生成交叉表

    首先,我们创建了一个名为`#result`的临时表,包含三列:`Class`(类别)、`CallDate`(日期)和`CallCount`(计数)。接着,通过`INSERT INTO`语句向该表中插入了一些示例数据。 ### 二、动态SQL构建交叉表查询 ...

    浅谈SQL数据库中滥用临时表、排序的解决方案

    2. **使用表变量**:在某些情况下,如果数据量不大,可以使用表变量代替临时表,因为它们不会创建磁盘上的物理对象,对性能影响较小。 3. **合理使用索引**:为临时表添加合适的索引可以显著提高查询速度,但也要...

    sql server 创建临时表的使用说明

    SQL Server中,临时表是一种非常实用的工具,用于在数据库会话中存储临时数据,尤其在处理复杂查询和多步骤操作时。临时表分为两种类型:局部临时表(以单个井号`#`开头)和全局临时表(以双井号`##`开头)。 1. **...

Global site tag (gtag.js) - Google Analytics