易截截图软件、单文件、免安装、纯绿色、仅160KB

SQLServer导出表到EXCEL文件的存储过程

 SQL Server导出表到EXCEL文件的存储过程:
  *--数据导出EXCEL
  导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
  ,如果文件不存在,将自动创建文件
  ,如果表不存在,将自动创建表
  基于通用性考虑,仅支持导出标准数据类型
  ---*/
  /**//*--调用示例
  p_exporttb @tbname='地区资料',@path='c:',@fname='aa.xls'
  --*/
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and
  OBJECTPROPERTY(id, N'IsProcedure') = 1)
  drop procedure [dbo].[p_exporttb]
  GO
  create proc p_exporttb
  @tbname sysname, --要导出的表名,注意只能是表名/视图名
  @path nvarchar(1000), --文件存放目录
  @fname nvarchar(250)='' --文件名,默认为表名
  as
  declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
  declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
  --参数检测
  if isnull(@fname,'')='' set @fname=@tbname+'.xls'
  --检查文件是否已经存在
  if right(@path,1)<>'' set @path=@path+''
  create table #tb(a bit,b bit,c bit)
  set @sql=@path+@fname
  insert into #tb exec master..xp_fileexist @sql
  --数据库创建语句
  set @sql=@path+@fname
  if exists(select 1 from #tb where a=1)
  set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
  +';CREATE_DB="'+@sql+'";DBQ='+@sql
  else
  set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'
  +';DATABASE='+@sql+'"'
  --连接数据库
  exec @err=sp_oacreate 'adodb.connection',@obj out
  if @err<>0 goto lberr
  exec @err=sp_oamethod @obj,'open',null,@constr
  if @err<>0 goto lberr
  --创建表的SQL
  select @sql='',@fdlist=''
  select @fdlist=@fdlist+','+a.name
  ,@sql=@sql+',['+a.name+'] '
  +case when b.name in('char','nchar','varchar','nvarchar') then
  'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
  when b.name in('tynyint','int','bigint','


相关文档:

细节 sqlserver 的ntext类型在数据库中是看不到值的

 sqlserver 的ntext类型在数据库中是看不到值的
起初我还以为数据没有插入,后来才知道ntext类型在数据库中本来就看不到的(数据较短的可以看到);
那我要想看到ntext数据怎么办?
在查询分析器中可以看到(查询分析器中也只看到了前几十个字符, 不是全部的) ......

sqlserver 跨库拷贝数据


Create Procedure up_InsertData2
@ID INT
AS
BEGIN
Declare @Name NVARCHAR(30)
Declare @c1 NVARCHAR(30)
Declare @c2 NVARCHAR(30)
Declare @c3 NVARCHAR(30)
Declare @c4 NVARCHAR(30)
Declare tmpCur Cursor For Select a,b,c,d from  table1
Open tmpCur;
Fetch Next from tmpCur Into @c1,@c2,@c3 ......

ORACLE临时表和SQLSERVER临时表异同

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

Oracle中与SQLSERVER ISNULL函数相同作用的函数

NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值
NVL2(Expr1,Expr2,Expr3)如果Expr1为NULL,返回Expr2的值,否则返回Expr3的值
NULLIF(Expr1,Expr2)如果Expr1和Expr2的值相等,返回NULL,否则返回Expr1的值 ......

触发器的创建及使用(sqlserver 2005)

触发器的创建及使用(sqlserver 2005)
创建 DML 或 DDL 触发器。触发器是数据库服务器中发生事件时自动执行的特种存储过程。如果用户要通过数据操作语言 (DML) 事件编辑数据,则执行 DML 触发器。DML 事件是针对表或视图的 INSERT、UPDATE 或 DELETE 语句。DDL 触发器用于响应各种数据定义语言 (DDL) 事件。这些主要是 CRE ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号