SQL Server 如何將直接傳遞查詢作為表使用
Microsoft® SQL Server™ 2000 將直接傳遞查詢作為未解釋的查詢字符串發(fā)送到 OLE DB 數(shù)據(jù)源。查詢必須使用 OLE DB 數(shù)據(jù)源可以接受的語(yǔ)法。Transact-SQL 語(yǔ)句像使用常規(guī)表引用一樣使用直接傳遞查詢結(jié)果。
本示例使用直接傳遞查詢從 Microsoft Access 版本的 Northwind 示例數(shù)據(jù)庫(kù)中檢索結(jié)果集。
以下是引用片段:SELECT * FROM OpenRowset('Microsoft.Jet.OLEDB.4.0', 'c:northwind.mdb';'admin'; '', 'SELECT CustomerID, CompanyName FROM Customers WHERE Region = ''WA'' ')
有兩種方法可以從 OLE DB 提供程序中生成行集:
·引用提供程序可以表現(xiàn)為表格格式行集的數(shù)據(jù)源中的對(duì)象。所有提供程序都支持這一功能。
·向提供程序發(fā)出一條命令,該命令應(yīng)可以由提供程序處理且處理結(jié)果可以表現(xiàn)為行集。此功能要求提供程序支持 OLE DB Command 對(duì)象和它的所有強(qiáng)制接口。
當(dāng)提供程序支持 Command 對(duì)象時(shí),這兩個(gè) Transact-SQL 函數(shù)可以用來發(fā)送命令(稱為直接傳遞查詢):
·OPENQUERY 使用鏈接服務(wù)器名稱向 OLE DB 數(shù)據(jù)源發(fā)送命令字符串。
·OPENROWSET 和 OPEBDATASOURCE 支持向 OLE DB 數(shù)據(jù)源發(fā)送命令字符串。可以使用特殊名稱引用所得到的行集。
OLE DB 規(guī)范并未定義一種可供所有 OLE DB 提供程序使用的命令語(yǔ)言。OLE DB 提供程序可以支持與所表現(xiàn)數(shù)據(jù)相關(guān)的任意命令語(yǔ)言。表現(xiàn)關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的 OLE DB 提供程序通常支持 SQL 語(yǔ)言。其它類型的提供程序(例如表現(xiàn)電子郵件文件或網(wǎng)絡(luò)目錄中的數(shù)據(jù)的提供程序)通常支持另一種語(yǔ)言。
