我正在尝试为 Linked server 创建存储过程,其输入参数@ServerName是我使用的链接服务器的名称 . 在这个过程中,我还声明参数从动态SQL查询和行获取的值 .
CREATE PROC sp_Version @ServerName varchar(30)as Declare @Ver varchar(10)exec('select @Ver from openquery('@ ServerName',''SELECT SUBSTRING(@@ VERSION,22,7)= @Ver'' “)
当我执行我的sp我得到一个错误说:
“必须声明标量变量”@Ver“ . ”
请你帮助我好吗?
2 回答
我曾经遇到过这种情况 . 试试这个:
我不确定你的目标是@Ver的值,也许是
OUTPUT
参数?如果是这样,那么语法将是:注意,首先,正如我所建议的那样,我没有使用
sp_
前缀 . 我也使用sp_executesql
而不是简单的EXEC
(这通常是更好的做法,因为你可以参数化你的动态SQL然后,就像我所做的那样),并且QUOTENAME
试图避免注入 .