/* OPENQUERY函數,遠程執行數據庫增刪改查 關於OPENQUERY函數第二個參數不支持拼接變量的方案 方案1:將OPENQUERY語句整個拼接爲字符串,再用EXEC執行該字符串語句 方案2:將要拼接的變量直接挪移到括號外進行拼接 因爲字符串中單引號多層引用須要用到不少個單引號,容易混淆,致使方案1寫起來頭疼、眼睛疼,可是自由度大,想怎麼來就怎麼來。 而方案2可以清晰簡潔地使用變量,但經我目前的測試,發現只有SELECT語句和DELETE語句的WHERE子句能夠挪移出來(見上方SQL語句),限制太大。 OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp'';') 第一個參數爲配置好的連接服務器名稱,第二個參數爲要執行的MySQL命令 */ DECLARE @username NVARCHAR(50), @pwd VARCHAR(64), @pwdmd5 VARCHAR(64), @sql VARCHAR(2000), @sql2 VARCHAR(2000) --設置用戶名 SET @username = 'hhp' --設置密碼 SET @pwd = '123456' --對密碼進行MD5加密 SET @pwdmd5 = SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @pwd)),3,32) --1.SELECT語句 SELECT * FROM OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp'';'); --或 SELECT * FROM OPENQUERY(MySQL, 'select * from hhp_user') WHERE chrusername = @username --2.INSERT語句,INTO可省略 INSERT INTO OPENQUERY(MySQL,'select chrusername,chrpwd from hhp_user;') VALUES( @username , @pwdmd5) --3.UPDATE語句 SET @pwd = 'hhp' SET @pwdmd5 = SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @pwd)),3,32) UPDATE OPENQUERY(MySQL, 'select chrusername, chrpwd from hhp_user where chrusername = ''hhp''') SET chrpwd = @pwdmd5 --4.DELETE語句,FROM可省略 DELETE FROM OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp''') --或 SET @username = 'ls' DELETE FROM OPENQUERY(MySQL, 'select * from hhp_user') WHERE chrusername = @username