2010年6月11日 星期五

簡化在OPENQUERY中使用變數的方法

/*
簡化在OPENQUERY中使用變數的方法。
SQL2005以上版本適用。
*/

/*
遇到Server SQL2000不能用來配置RPC,如果這樣你不需要用下面的命令啟用RPC:
執行下列的語法。
*/
EXEC sp_serveroption @server='SQL2000', @optname='rpc', @optvalue='true'
GO
EXEC sp_serveroption @server='SQL2000', @optname='rpc out', @optvalue='true'
GO
--原本的寫法,要組字串時常常要加上''''',相當的麻煩
DECLARE @SQLCMD VARCHAR(500)
DECLARE @ogid AS VARCHAR(4)
SET @ogid = '2210'
SET @SQLCMD=' SELECT * FROM OPENQUERY(SQL2000,'' SELECT * FROM FAT.dbo.Orgn
WHERE ogid ='''''+@ogid+''''''') '
EXEC (@SQLCMD)
GO
--EXECUTE AT的用法
EXECUTE ('SELECT * FROM FAT.dbo.Orgn WHERE ogid = ? ', '2210')
AT [SQL2000];
GO
--使用EXECUTE AT 可以簡化如下
DECLARE @ogid AS VARCHAR(4)
SET @ogid = '2210'
EXECUTE ('SELECT * FROM FAT.dbo.Orgn WHERE ogid = ? ', @ogid)
AT [SQL2000];
GO

沒有留言:

張貼留言