欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQLServer2000把指定查詢輸出為Excel文件的存儲

系統 1974 0
?
SET ?QUOTED_IDENTIFIER? ON ?
GO
SET ?ANSI_NULLS? ON ?
GO



ALTER ??? proc ?stp_ExportTable
????
@sqlstr ? nvarchar ( 4000 ),???????? -- 查詢語句,如果查詢語句中使用了order?by?,請加上top?100?percent,注意,如果導出表/視圖,用上面的存儲過程
???? @orderstr ? nvarchar ( 255 ),???? -- Order?by?Field
???? @path ? nvarchar ( 1000 ),??????? -- 文件存放目錄
???? @fname ? nvarchar ( 250 ),??????? -- 文件名
???? @sheetname ? varchar ( 250 ) = '' ?????? -- 要創建的工作表名,默認為文件名
as ?
????
declare ? @err ? int , @src ? nvarchar ( 255 ), @desc ? nvarchar ( 255 ), @out ? int
????
declare ? @obj ? int , @constr ? nvarchar ( 1000 ), @sql ? varchar ( 4000 ), @fdlist ? varchar ( 8000 )
????
declare ? @IstmpTB ? as ? bit
????
declare ? @tmpsql ?? as ? varchar ( 4000 )


????
SET ? @IstmpTB = 0
????
-- 參數檢測
???? if ? isnull ( @fname , '' ) = '' ? set ? @fname = ' temp.xls '
????
if ? isnull ( @sheetname , '' ) = '' ? set ? @sheetname = replace ( @fname , ' . ' , ' # ' )
????
????
-- 檢查文件是否已經存在
???? 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?8.0;HDR=YES '
????????
+ ' ;DATABASE= ' + @sql + ' " '



????
-- 連接數據庫
???? -- print?'nn33'
???? exec ? @err = sp_oacreate? ' adodb.connection ' , @obj ?out
????
if ? @err <> 0 ? goto ?lberr
????
-- print?'nn44'
???? exec ? @err = sp_oamethod? @obj , ' open ' , null , @constr
????
if ? @err <> 0 ? goto ?lberr

????
-- 構造temp表的SQL
???? declare ? @tbname ?sysname
????
set ? @tbname = ' ##tmp_ ' + convert ( varchar ( 38 ), newid ())
????
set ? @sql = ' select?*?into?[ ' + @tbname + ' ]?from( ' + @sqlstr + ' )?a '
????
-- print?@sql
???? exec ( @sql )
????
set ? @IstmpTB = 1
????
????
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 ( ' bit ' , ' int ' , ' bigint ' , ' tinyint ' , ' smallint ' )? then ? ' int '
???????
when ?b.name? in ( ' smalldatetime ' , ' datetime ' )? then ? ' datetime '
???????
when ?b.name? in ( ' money ' , ' smallmoney ' )? then ? ' money '
???????
else ?b.name? end
????
FROM ?tempdb..syscolumns?a? left ? join ?tempdb..systypes?b? on ?a.xtype = b.xusertype
????
where ?b.name? not ? in ( ' image ' , ' text ' , ' uniqueidentifier ' , ' sql_variant ' , ' ntext ' , ' varbinary ' , ' binary ' , ' timestamp ' )
?????
and ?a.id = ( select ?id? from ?tempdb..sysobjects? where ?name = @tbname )
????
????
select ? @sql = substring ( @sql , 2 , 2000 ), @fdlist = substring ( @fdlist , 2 , 2000 )

????
-- create?table
???? select ? @sql = ' create?table?[ ' + @sheetname + ' ]( ' + @sql + ' ) '
????
-- print?@sql
???? exec ? @err = sp_oamethod? @obj , ' execute ' , @out ?out, @sql
????
if ? @err <> 0 ? goto ?lberr
????
-- print?'nn'
???? -- destroy?ole?object
???? exec ? @err = sp_oadestroy? @obj
????
if ? @err <> 0 ? goto ?lberr
????
-- print?'nn1'
???? -- 導入數據
????
????
set ? @sql = ' openrowset( '' MICROSOFT.JET.OLEDB.4.0 '' , '' Excel?8.0;HDR=YES
???????;DATABASE=
' + @path + @fname + ''' ,[ ' + @sheetname + ' $]) '
????
????
set ? @tmpsql = ' insert?into? ' + @sql + ' ( ' + @fdlist + ' )?select? ' + @fdlist + ' ?from?[ ' + @tbname + ' ] '
????
-- print?@tmpsql
???? if ? @orderstr ? is ? not ? null ? or ? @orderstr <> ''
????
begin
????????
set ? @tmpsql = @tmpsql + ' ?order?by? ' + @orderstr
????
end
????
-- print?@tmpsql????
???? exec ( @tmpsql )
????
????
set ? @sql = ' drop?table?[ ' + @tbname + ' ] '
????
exec ( @sql )
????
set ? @IstmpTB = 0
????
????
return ? 0

lberr:
???
???????
EXEC ?sp_displayoaerrorinfo? @obj ,? @err
????
-- DELETE?TmpTable?While?Error?
???? IF ? @IstmpTB = 1 ?
????
BEGIN
????????
set ? @sql = ' drop?table?[ ' + @tbname + ' ] '
????????
exec ( @sql )
????
END
????
return ? - 1
lbexit:
????
SELECT ? @sql , @constr , @fdlist


GO
SET ?QUOTED_IDENTIFIER? OFF ?
GO
SET ?ANSI_NULLS? ON ?
GO

SQLServer2000把指定查詢輸出為Excel文件的存儲過程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区免费在线观看 | 精品呦女 | 欧美日韩亚洲高清不卡一区二区三区 | 99精品视频在线这里只有 | 手机看片日韩 | 国产精品视频播放 | 国产精品国产三级在线专区 | 日韩成人免费视频 | 午夜影院试看五分钟 | 久久99精品视香蕉蕉 | 成人嘿嘿视频网站在线 | 色综合久久综精品 | 第一色在线 | 天天人人精品 | 夜色成人网 | 免费在线一区二区三区 | 日韩精品手机在线 | 污版视频在线观看 | 日韩色在线 | 欧美一极视频 | 成人午夜毛片在线看 | 国产视频日本 | 国产一级做a爰片久久毛片 欧美一区欧美二区 | 香蕉视频在线观看免费国产婷婷 | 亚洲一级免费视频 | 久久精品性视频 | 天天摸天天操天天干 | 久久伦理中文字幕 | 精品国产欧美 | 日韩视| 免费看一级视频 | 久久久久日韩精品免费观看网 | 亚洲国产成人在线 | 99久久精品免费看国产免费 | 国产中文字幕久久 | 日本一区视频在线播放 | 久久色播| 91污网站 | 日日爱669 | 色一欲一性一乱一区二区三区 | 欧日韩在线视频 |