存儲過程輸出表
A. 如何用sql2005的存儲過程導出EXECL表,急,線上等
導出查詢中的數據到Excel,包含欄位名,文件為真正的Excel文件
,如果文件不存在,將自動創建文件
,如果表不存在,將自動創建表
基於通用性考慮,僅支持導出標准數據類型
--*/
/**//*--調用示例
p_exporttb @sqlstr='select * from 地區資料' ,@path='c:',@fname='aa.xls',@sheetname='地區資料'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and
OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_exporttb]
GO
create proc p_exporttb
@sqlstr sysname, --查詢語句,如果查詢語句中使用了order by ,請加上top 100 percent,注意,如果導 出表/視圖,用友喊祥上面的存儲過程
@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(8000),@fdlist varchar(8000)
--參數檢測
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 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
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@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','tinyint') 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='create table ['+@sheetname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
exec @err=sp_oadestroy @obj
--導入數據
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@sheetname+'$])'
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from['+@tbname+']')
set @sql='drop table ['+@tbname+']'
exec(@sql)
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 錯誤號 ,@src as 錯誤源,@desc as 錯誤描述
select @sql,@constr,@fdlist
go
B. 如何在sql2008中建立存儲過程,要求輸入年月,輸出該月庫存檔點報表
create proc report @date as datetime
as
select * from 庫存檔點報表 where 年月=@date
C. 在MySQL中如何創建一個帶輸出參數為一個表類型的存儲過程
在MySQL中如何創建一個帶輸出參數為一個表類型的存儲過程
首先需要知道「另一個存儲過程」的結果集的所有列的類型。
假設「另一個存儲過程」的名字是sp1,沒有參數,返回的結果集共3列,全部為int型,那麼「存儲過程」里添加一個與結果集列數相同的臨時表或表變數用於接收「另一個存儲過程」的結果集
如下
CREATE
PROCEDURE
sp2
AS
DECLARE
@t
table(a
int,b
int,c
int)
INSERT
INTO
@t(a,b,c)
EXEC
sp1
SELECT
*
FROM
@t
使用SQLSERVER存儲過程可以很大的提高程序運行速度,簡化編程維護難度,現已得到廣泛應用。
創建存儲過程
和數據表一樣,在使用之前需要創建存儲過程,它的簡明語法是:
引用:
Create
PROC
存儲過程名稱
[參數列表(多個以「,」分隔)]
AS
SQL
語句
例:
引用:
Create
PROC
upGetUserName
@intUserId
INT,
@ostrUserName
NVARCHAR(20)
OUTPUT
--
要輸出的參數
AS
BEGIN
--
將uName的值賦給
@ostrUserName
變數,即要輸出的參數
Select
@ostrUserName=uName
FROM
uUser
Where
uId=@intUserId
END
其中
Create
PROC
語句(完整語句為Create
PROCEDURE)的意思就是告訴SQL
SERVER,現在需要建立一個存儲過程,upGetUserName
就是存儲過程名稱,@intUserId
和
@ostrUserName
分別是該存儲過程的兩個參數,注意,在SQL
SERVER中,所有用戶定義的變數都以「@」開頭,OUTPUT關鍵字表示這個參數是用來輸出的,AS之後就是存儲過程內容了。只要將以上代碼在「查詢分析器」里執行一次,SQL
SERVER就會在當前資料庫中創建一個名為「upGetUserName」的存儲過程。你可以打開「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇「存儲過程」,此時就可以在右邊的列表中看到你剛剛創建的存儲過程了(如果沒有,刷新一下即可)。
二、存儲過程的調用
之前已經創建了一個名為「upGetUserName」的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。
D. java調用sqlserver的存儲過程如何輸出一個表的全部記錄,既在控制台上列印出來
是要輸出表結構信息 還是 輸出表數據?
如果是結構信息豎搜凳的話調用:sp_help ,是sqlserver自帶的存儲過程。余旅
如果是表數據的話,那就像查詢一樣嘛。漏正
E. oracle存儲過程如何輸出信息
可用DBMS_OUTPUT.PUT_LINE()對存儲過程的進行輸出。
編寫存儲過程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('輸出SQL語句1');
elsif M < 3 then
dbms_output.put_line('輸出SQL語句2');
else
dbms_output.put_line('nothing');
end if;
end;
(5)存儲過程輸出表擴展閱讀;
存儲在資料庫的數據字典中,存儲在當前的應用中安全性由資料庫提供安全保證,必須通過授權才能使用存儲子程序,安全性靠應用程序來保證,如果能執行應用程序,就能執行該子程序。模式描述IN參數用來從調用環境中向存儲過程傳遞值,不能給IN參數賦值,給此參數傳遞的值可以是常量、有值的變數、表達式等。
F. 請教高人解決SQL存儲過程的問題,把多次執行的結果集在一張表中輸出。
要麼建個表,把結果寫入表內,然後查詢。要麼把兩次的參數放一起一次執行。
G. 如何在sql中建立存儲過程:某月庫存狀況,並要求輸入:年月,輸出:該月庫存月結報表
這和庫存表的欄位有關,如果庫存表中沒有單獨的搜凳年和月的欄位,就涉及日期函數從你的要求來看頃扮DATEPART函數就可以滿雀漏灶足要求
H. 如何在SQL server數據空編寫一個存儲過程,將數據輸出到excel表裡面,表名為:data.xls 。
.jpg
靜態圖象專家組制訂的靜態圖象壓縮標准,具有很高的壓縮比,使用非常廣泛,可使用PhotoShop等圖象處理軟體創建
.gif
在各種平台的各種圖形處理軟體上均能夠處理的,經過壓縮的一種圖形文件格式
.rm
Windows下的RealPlayer所支持的視頻壓縮文件,網上非常流行的流式視頻文件,很多實時視頻新聞等都是採用這種格式的,不過,最新的Windows Media Video V8已經對其發起了強大的攻勢
.reg
Windows 95的系統及應用程序注冊文件,這種文件雖然以純文本文件保存,但一樣存在版侍談知本問題,不同的操作系統使用的REG文件版本是不同的
.bmp
Bitmap點陣圖文件,這是微軟公司開發Paint的自身格式,可以被多種Windows和Windows NT平台侍手及許多應用程序支持,支持32位顏色,用於為Windows界面創建圖標的資源文件格式。
.dll
Windows動態連接庫,幾乎無處不在,但有時由於不同版本DLL沖突會造成敗各種各樣的問踢
.exe
可執行文件,雖然後綴名相同,但具有不同的格式和版本
.bat
批處理文件,在MS-DOS中,.bat文件是可執行文件,有一系列命令構成,其中可以包含對其他程序的調用
.com
DOS可執行命令文件,一般小於64KB
.rar
WinRAR提供的壓縮文件格式,壓縮率超過ZIP,同時提供的功能也更為豐富
.mp3
採用MPEG-1 Layout 3標准壓縮的音頻文件,是網上主要的壓縮音頻文件,這種文件由於具有極高的壓縮率和失真低的特點,是目前音樂盜版的主要文件格式,但目前受到VQF,WMA等新標準的老消挑戰
I. 需要實現將SQLSERVER資料庫存儲過程執行結果輸出到指定EXCEL表中該怎麼做謝謝
說說思路:
這個顯然要用ADO
1、連接資料庫帶顫,得到連接對象conn
2、用下面的select語句打開升州表,將數據讀入RecordSet
set rs=conn.execute("select * from 表名")
3、用循環將數據讀入二維數組arr
row=0
while not rs.eof
arr[row,0]=rs["id"]
arr[row,1]=rs["year"蠢笑敗]
arr[row,2]=rs["mon"]
arr[row,3]=rs["1"]
arr[row,4]=rs["2"]
...
...
...
row=row+1
wend