第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將存儲過程的結(jié)果插入臨時表

將存儲過程的結(jié)果插入臨時表

慕田峪4524236 2019-05-27 10:57:12
將存儲過程的結(jié)果插入臨時表我該怎么辦SELECT * INTO [temp table] FROM [stored procedure]?不FROM [Table],沒有定義[temp table]?Select所有數(shù)據(jù)都可以BusinessLine正常tmpBusLine工作。select *into tmpBusLinefrom BusinessLine我嘗試相同,但使用stored procedure返回數(shù)據(jù),并不完全相同。select *into tmpBusLinefromexec getBusinessLineHistory '16 Mar 2009'輸出消息:消息156,級別15,狀態(tài)1,行2關(guān)鍵字'exec'附近的語法不正確。我已經(jīng)閱讀了幾個創(chuàng)建一個與輸出存儲過程結(jié)構(gòu)相同的臨時表的例子,它工作正常,但不提供任何列會很好。
查看完整描述

4 回答

?
撒科打諢

TA貢獻1934條經(jīng)驗 獲得超2個贊

你可以使用OPENROWSET??匆豢?。我還包括sp_configure代碼以啟用Ad Hoc Distributed Queries,以防它尚未啟用。

CREATE PROC getBusinessLineHistory

AS

BEGIN

    SELECT * FROM sys.databases

END

GO


sp_configure 'Show Advanced Options', 1

GO

RECONFIGURE

GO

sp_configure 'Ad Hoc Distributed Queries', 1

GO

RECONFIGURE

GO


SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;',

     'EXEC getBusinessLineHistory')


SELECT * FROM #MyTempTable


查看完整回答
反對 回復(fù) 2019-05-27
?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

如果要在不先聲明臨時表的情況下執(zhí)行此操作,可以嘗試創(chuàng)建用戶定義的函數(shù)而不是存儲過程,并使該用戶定義的函數(shù)返回表?;蛘撸绻胧褂么鎯^程,請嘗試以下方法:

CREATE TABLE #tmpBus(
   COL1 INT,
   COL2 INT)INSERT INTO #tmpBusExec SpGetRecords 'Params'


查看完整回答
反對 回復(fù) 2019-05-27
?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

這是對您的問題的略微修改版本的答案。如果您可以放棄對用戶定義函數(shù)使用存儲過程,則可以使用內(nèi)聯(lián)表值用戶定義函數(shù)。這本質(zhì)上是一個存儲過程(將采用參數(shù)),它返回一個表作為結(jié)果集; 因此將很好地與INTO聲明。

這是一篇關(guān)于它和其他用戶定義函數(shù)的快速文章。如果仍然需要存儲過程,則可以使用存儲過程包裝內(nèi)聯(lián)表值用戶定義函數(shù)。當(dāng)存儲過程從內(nèi)聯(lián)表值用戶定義函數(shù)調(diào)用select *時,它只傳遞參數(shù)。

因此,例如,您將擁有一個內(nèi)聯(lián)表值用戶定義函數(shù)來獲取特定區(qū)域的客戶列表:

CREATE FUNCTION CustomersByRegion 
(  
    @RegionID int  
)RETURNS TABLE ASRETURN 
  SELECT *
  FROM customers  WHERE RegionID = @RegionID
GO

然后,您可以調(diào)用此函數(shù)來獲得結(jié)果:

SELECT * FROM CustomersbyRegion(1)

或者做一個SELECT INTO:

SELECT * INTO CustList FROM CustomersbyRegion(1)

如果您仍需要存儲過程,則將函數(shù)包裝為:

CREATE PROCEDURE uspCustomersByRegion 
(  
    @regionID int  
)ASBEGIN
     SELECT * FROM CustomersbyRegion(@regionID);ENDGO

我認(rèn)為這是獲得預(yù)期結(jié)果的最“無懈怠”的方法。它使用現(xiàn)有的功能,因為它們的使用目的沒有額外的復(fù)雜性。通過在存儲過程中嵌套內(nèi)聯(lián)表值的用戶定義函數(shù),您可以通過兩種方式訪問該功能。加!實際的SQL代碼只有一個維護點。

已經(jīng)建議使用OPENROWSET,但這不是OPENROWSET函數(shù)的用途(來自聯(lián)機叢書):

包括從OLE DB數(shù)據(jù)源訪問遠程數(shù)據(jù)所需的所有連接信息。此方法是訪問鏈接服務(wù)器中的表的替代方法,是使用OLE DB連接和訪問遠程數(shù)據(jù)的一次性臨時方法。要更頻繁地引用OLE DB數(shù)據(jù)源,請改用鏈接服務(wù)器。

使用OPENROWSET將完成工作,但是它會產(chǎn)生一些額外的開銷,用于打開本地連接和編組數(shù)據(jù)。它也可能不是所有情況下的選項,因為它需要臨時查詢許可,這會帶來安全風(fēng)險,因此可能不是所希望的。此外,OPENROWSET方法將排除使用返回多個結(jié)果集的存儲過程。在單個存儲過程中包裝多個內(nèi)聯(lián)表值用戶定義函數(shù)可以實現(xiàn)此目的。


查看完整回答
反對 回復(fù) 2019-05-27
  • 4 回答
  • 0 關(guān)注
  • 2733 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號