`

sqlserver用存储过程写insert语句

阅读更多
转自:http://www.cnblogs.com/cheatlove/archive/2007/08/23/867427.html
CREATE       PROCEDURE   dbo.UspOutputData  
  @tablename   sysname  
  AS  
  declare   @column   varchar(1000)  
  declare   @columndata   varchar(1000)  
  declare   @sql   varchar(4000)  
  declare   @xtype   tinyint  
  declare   @name   sysname  
  declare   @objectId   int  
  declare   @objectname   sysname  
  declare   @ident   int  
   
  set   nocount   on  
  set   @objectId=object_id(@tablename)  
   
  if   @objectId   is   null   --   判斷對象是否存在    
  begin    
  print   'The   object   not   exists'    
  return    
  end    
  set     @objectname=object_name(@objectId)  
   
  if     @objectname   is   null   or   charindex(@objectname,@tablename)=0   --此判断不严密  
  begin  
  print   'object   not   in   current   database'  
  return  
  end  
   
  if   OBJECTPROPERTY(@objectId,'IsTable')   <>   1   --   判斷對象是否是table    
  begin    
  print   'The   object   is   not   table'    
  return    
  end    
   
  select   @ident=status&0x80     from   syscolumns   where   id=@objectid   and   status&0x80=0x80  
   
  if   @ident   is   not   null  
  print   'SET   IDENTITY_INSERT   '+@TableName+'   ON'  
   
  declare   syscolumns_cursor   cursor    
  for   select   c.name,c.xtype   from   syscolumns   c  
  where   c.id=@objectid  
  order   by   c.colid  
  open   syscolumns_cursor  
  set   @column=''  
  set   @columndata=''  
  fetch   next   from   syscolumns_cursor   into   @name,@xtype  
  while   @@fetch_status   <>-1  
  begin  
  if   @@fetch_status<>-2  
  begin  
  if   @xtype   not   in(189,34,35,99,98)   --timestamp不需处理,image,text,ntext,sql_variant   暂时不处理  
  begin  
  set   @column=@column+case   when   len(@column)=0   then''   else   ','end+@name  
  set   @columndata=@columndata+case   when   len(@columndata)=0   then   ''   else   ','','','end  
  +case   when   @xtype   in(167,175)   then   '''''''''+'+@name+'+'''''''''   --varchar,char  
  when   @xtype   in(231,239)   then   '''N''''''+'+@name+'+'''''''''   --nvarchar,nchar  
  when   @xtype=61   then   '''''''''+convert(char(23),'+@name+',121)+'''''''''   --datetime  
  when   @xtype=58   then   '''''''''+convert(char(16),'+@name+',120)+'''''''''   --smalldatetime  
  when   @xtype=36   then   '''''''''+convert(char(36),'+@name+')+'''''''''   --uniqueidentifier  
  else   @name   end  
  end  
  end      
  fetch   next   from   syscolumns_cursor   into   @name,@xtype  
  end  
  close   syscolumns_cursor  
  deallocate   syscolumns_cursor  
   
  set   @sql='set   nocount   on   select   ''insert   '+@tablename+'('+@column+')   values(''as   ''--'','+@columndata+','')''   from   '+@tablename  
   
  print   '--'+@sql  
  exec(@sql)  
   
  if   @ident   is   not   null  
  print   'SET   IDENTITY_INSERT   '+@TableName+'   OFF'  
   
  GO  


执行方法是: exec   UspOutputData   你的表名  
  得到导出数据的语句,但image,text,ntext,sql_variant   列不出现在语句,以后改进。
分享到:
评论

相关推荐

    SQL Server中存储过程比直接运行SQL语句慢的原因

    SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...

    将sqlserver表中指定数据转化为insert语句

    要排除自增列并处理非固定数据类型,你可以编写一个存储过程,生成动态的INSERT语句。首先,你需要获取表结构,然后构造INSERT语句,避开自增列。例如: ```sql DECLARE @sql NVARCHAR(MAX) = '' SELECT @sql +...

    SQLServer导出为Insert语句

    本话题聚焦于如何将SQL Server中的用户表数据导出为Insert语句,这通常用于数据迁移、备份或者测试环境的数据填充。下面我们将详细讨论这个过程以及涉及的相关技术。 1. **SQL Server数据库**:SQL Server是由微软...

    SQL Server存储过程生成insert语句实例

    总的来说,`spGenInsertSQL`存储过程提供了一种方便的方式来动态生成INSERT语句,帮助用户快速地在不同的SQL Server数据库间复制数据。然而,为了确保数据的完整性和一致性,使用前应仔细检查生成的SQL语句,并在...

    sql server 2008 存储过程与储发器 详解 书籍

    在SQL Server 2008中,可以通过图形化工具(如SQL Server Management Studio,简称SSMS)来创建、修改和管理存储过程和触发器,也可以使用T-SQL脚本来进行操作。 对于存储过程,我们可以创建参数化的存储过程以实现...

    SQL Server存储过程基本语法

    以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。

    导出sql server表数据(以insert语句方式的存储过程)

    导出sql server表数据(生成以insert插入的语句方式的存储过程)

    sqlserver导出insert语句的存储过程

    ### SQL Server 存储过程实现表数据导出为 INSERT 语句 在 SQL Server 数据库管理系统中,有时候我们需要将表中的数据导出成一系列的 INSERT 语句,这对于备份、恢复或者迁移数据非常有用。本篇文章详细介绍了一个...

    SQLServer表数据转化为sql语句(表数据搬运,一键快捷导出为insert语句,方便导入到其它库)

    (包含insert语句。结果可一键执行,利于数据导出、导入) 参数: @tableName nvarchar(100) --表名 ,@sqlWhere nvarchar(500) --where条件,如'a=''123'' '(传空时,导出全表数据) 不足: 不支持binary,image等...

    SQL server存储过程习题,SQL触发器习题.rar

    综上,SQL Server的存储过程和触发器是数据库编程的重要组成部分,掌握它们的使用可以帮助我们更高效地管理和维护数据库。通过做相关的习题,不仅可以巩固理论知识,还能提升实际操作技能。对于初学者而言,从基础...

    SQL SERVER:把表里的数据导出成为INSERT INTO脚本的存储过程

    根据提供的文件信息,我们可以构建一个详细的SQL Server存储过程来实现将表中的数据转换为`INSERT INTO`脚本的功能。此存储过程将适用于多种数据类型,并能够动态生成插入语句,以便用户可以方便地导出数据作为脚本...

    SQLServer 2000存储过程手册

    用户自定义存储过程则是由开发人员根据需求创建,可以包含一系列的T-SQL语句,如SELECT、INSERT、UPDATE、DELETE等。 1. **创建存储过程**:使用CREATE PROCEDURE语句创建存储过程,定义输入参数、输出参数或两者兼...

    sqlserver的存储过程与 where in 多值参数

    在SQL Server中,存储过程是预编译的SQL语句集合,它们封装了特定的数据库操作,提高了代码的重用性和执行效率。当涉及到处理多个值时,我们常常会遇到如何将这些值作为参数传递给存储过程的问题。本文将探讨在SQL ...

    解密SQL存储过程,适用于SQLSERVER2000存储过程

    ### 解密SQL Server 2000存储过程详解 #### 一、背景介绍 在数据库管理系统(DBMS)中,存储过程是一种预先编译好的SQL语句集合,它被保存在数据库服务器上,并且可以像调用普通函数一样被应用程序所调用。这种机制...

    导出insert语句的存储过程sql脚本

    根据提供的信息,我们可以详细解析如何创建一个SQL Server的存储过程,该存储过程的功能是将指定表中的数据转换为INSERT语句。这对于数据备份、迁移或重构数据库时非常有用。 ### 存储过程名称:dataToSQLScript ...

    生成insert语句的存储过程

    sqlserver的存储过程批量生成insert插入语句 在需要批量导入数据或者保留数据的情况下使用

    java调用sqlserver存储过程.pdf

    在本例中,使用了 JDBC 来连接到 SQL Server 数据库,调用 `InsertUser` 存储过程。 6. 存储过程的优点 存储过程有很多优点,例如可以提高数据库的安全性、简化数据库的维护、提高数据的_consistency 等。在本例...

    sql_server存储过程

    SQL Server 存储过程是一种预编译的SQL脚本,可以提高SQL语句的执行效率并简化复杂的数据库操作。存储过程能够实现对数据库的安全访问,并支持参数化查询,增强应用程序与数据库之间的交互。 #### 二、创建与删除...

    SQL Server 存储过程与实例

    以下是关于SQL Server存储过程的详细说明: 1. **存储过程的概念** 存储过程Procedure是一系列SQL语句的集合,它们在数据库中以编译好的形式存储,当需要执行时,只需要调用存储过程的名称并传入相应的参数。存储...

Global site tag (gtag.js) - Google Analytics