存储过程我想创建一个新的存储过程sp_sync_table
(在SQL Server 2012),它接受一个参数(链接服务器名称)。然而,突出声明@linkedServerName
变量是不够的。 CREATE PROCEDURE
指令失败,因为它无法解析@linkedServerName
,除非@linkedServerName
为SET为特定名称。与@variable服务器名称
它失败,错误:
Msg 102, Level 15, State 1, Procedure sp_sync_table, Line 31
Incorrect syntax near '.'.)
很明显,我不能提供一个特定的名称,必须要通过
exec sp_sync_table server_name
这是失败的部分中传递:
CREATE PROCEDURE sp_sync_table
@linkedServerName AS VARCHAR(50)
AS BEGIN
.
.
.
DECLARE cursorX CURSOR FOR
SELECT col1, col2, col3, col4 FROM @linkedServerName.[db-name].[dbo].[table]
OPEN cursorX
.
.
.
该方案的解决方法是什么?
我认为动态SQL将是你唯一的选择 – jazza1000
好了,不知道你是游标里面做什么,但有可能在连接服务器创建此过程,只是远程调用的程序,而不是试图在调用方的动态SQL中将所有这一切混为一谈? –
..这太容易了(链接的服务器不是我的),所以很不幸:) – Milan