国产亚洲精品a在线看。,骚货想不想被艹,国产麻豆剧传媒兔子先生,好大好爽好想要被操视频


昂捷論壇≡零售最前線≡□-技術(shù)研討會 → 如何將變量傳遞給鏈接的服務(wù)器查詢


  共有31867人關(guān)注過本帖樹形打印

主題:如何將變量傳遞給鏈接的服務(wù)器查詢

帥哥喲,離線,有人找我嗎?
czg1981
  1樓 個性首頁 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:昂捷團(tuán)隊↑ 帖子:262 積分:3772 威望:0 精華:3 注冊:2005/10/21 12:33:38
如何將變量傳遞給鏈接的服務(wù)器查詢  發(fā)帖心情 Post By:2010/1/28 16:12:36

數(shù)據(jù)庫之間通過鏈接服務(wù)器訪問另一臺服務(wù)有兩種方法,一種是我們常用的使用四部分名稱,另外一種就是用行集函數(shù)代入?yún)?shù)法。

四部分名稱法就是用 “鏈接服務(wù)器.數(shù)據(jù)庫名.用戶名.表名”的形式,這個如何加參數(shù)我們就不介紹了。

行集函數(shù)指的是:OPENQUERY、OPENROWSET、OPENXML、OPENDATASOURCE等,我們通過看語法就知道這類函數(shù)不能帶入變量。行集函數(shù)是直接將寫好的語句在服務(wù)器上執(zhí)行,然后再把返回結(jié)果顯示出來,因此它的效率要比四部分名稱法要快,如果說在傳語句中再加上條件,那這個差別就更快了,這個在遠(yuǎn)程服務(wù)器非Server SQL 更明顯。我們這邊做了一個測試,本地是SQL 2008,遠(yuǎn)程服務(wù)器是Oracle 9i,在一個近200W行的表中,顯示id=10000的一行記錄,用四部分名稱平均用時超過54秒,用OPENQUERY不到1S就完成。

1 傳遞基本值

在基本的 TRANSACT-SQL 語句已知,但必須在一個或多個特定的值傳遞時使用類似于下面的示例代碼

      DECLARE @TSQL varchar(8000), @VAR char(2)
      SELECT  @VAR = 'CA'
      SELECT  @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
      EXEC (@TSQL)
2 傳遞整個查詢

您必須傳遞整個 TRANSACT-SQL 查詢或鏈接的服務(wù)器 (或兩者),名稱中使用的代碼類似于下面的示例:

DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)

例子截選自:http://support.microsoft.com/kb/314520/zh-cn


使用IE9無法添加附件的解決方法 支持(0中立(0反對(0回到頂部
帥哥喲,離線,有人找我嗎?
czg1981
  2樓 個性首頁 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:昂捷團(tuán)隊↑ 帖子:262 積分:3772 威望:0 精華:3 注冊:2005/10/21 12:33:38
  發(fā)帖心情 Post By:2010/1/29 20:46:58

用 EXEC ('……') AT linkedserver 訪問遠(yuǎn)程服務(wù)器。

在上面介紹的OPENQUERY當(dāng)只使用 select 的時候,確實解決我的問題,后來使用update 時,確又出問題了,報“無法使用書簽從鏈接服務(wù)器的OLE DB 訪問接口 "OraOLEDB.Oracle"提取行”,后來查詢沒有什么好的解決方案,只能放棄!

后來在同事的幫助下,找到 用EXEC ('……') AT linkedserver的方式,后來發(fā)行這個比OPENQUERY好用,關(guān)鍵是可以直接帶入?yún)?shù)。

1 select、update、insert

--動態(tài)SQL在Oracle鏈接服務(wù)器上執(zhí)行
EXEC('select * from table_name ') AT R2000

2帶參賽的

declare @deposit int,@psword varchar(20),@cardno varchar(20)

set @deposit =1

set @psword='111111'

set @cardno='111111'

EXEC('update table_name set column_name1='+@deposit+',column_name2='+@psword+' where column_name3='''+@cardno+'''') AT R2000

3調(diào)研存儲過程

--執(zhí)行Oracle上存儲過程
EXEC('BEGIN UP_KPI_DATA(''05'',''2007''); END;') AT R2000


使用IE9無法添加附件的解決方法 支持(0中立(0反對(0回到頂部
开平市| 沾益县| 大名县| 青浦区| 清水河县| 望奎县| 民和| 普陀区| 台东市| 诸城市| 太白县| 大厂| 铁岭县| 偃师市| 贡嘎县| 邯郸县| 白城市| 曲阳县| 时尚| 玛纳斯县| 彩票| 洛南县| 渝中区| 阳山县| 泰州市| 芮城县| 甘孜县| 长治市| 邵阳市| 运城市| 绥阳县| 泸溪县| 阿图什市| 靖安县| 临汾市| 安阳市| 连南| 徐水县| 苏尼特左旗| 民和| 铜山县|