在线播放亚洲第一字幕,大鸡巴操死我了视频网站,欧美日韩中文字,久久久999婷婷欧美一区

以文本方式查看主題

-  昂捷論壇  (http://m.yzsenyi.com/bbs/index.asp)
--  □-技術(shù)研討會(huì)  (http://m.yzsenyi.com/bbs/list.asp?boardid=36)
----  如何將變量傳遞給鏈接的服務(wù)器查詢  (http://m.yzsenyi.com/bbs/dispbbs.asp?boardid=36&id=6831)

--  作者:czg1981
--  發(fā)布時(shí)間:2010/1/28 16:12:36
--  如何將變量傳遞給鏈接的服務(wù)器查詢

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

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

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

1 傳遞基本值

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

      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 傳遞整個(gè)查詢

您必須傳遞整個(gè) 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


--  作者:czg1981
--  發(fā)布時(shí)間:2010/1/29 20:46:58
--  

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

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

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

1 select、update、insert

--動(dòng)態(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)研存儲(chǔ)過程

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


仁寿县| 正定县| 大庆市| 三门峡市| 遂平县| 怀宁县| 泾源县| 深水埗区| 通山县| 延津县| 武定县| 临洮县| 山丹县| 甘德县| 台南市| 谢通门县| 馆陶县| 玛多县| 莎车县| 无极县| 宾川县| 陇南市| 应城市| 林甸县| 康乐县| 自贡市| 高密市| 长海县| 河西区| 江油市| 二连浩特市| 石门县| 五峰| 株洲市| 邯郸县| 溧水县| 双牌县| 松潘县| 贵州省| 高碑店市| 嫩江县|