-1

I want to execute a function through a linked server in SQL Server.

When I execute OPENQUERY, it runs successfully, but when I use execute @SQL, it throws an error.

This code runs successfully:

SELECT A 
FROM OPENQUERY([SERVER20], 'SELECT COUNT(9) AS A 
                            FROM MyData.dbo.MyFunctionName(''401700000809723'', null)')

However, this code results in an error:

DECLARE @Sql2 nvarchar(1000) = 'SELECT A FROM OPENQUERY([SERVER20] , ''SELECT COUNT(9) AS A FROM MyData.dbo.MyFunctionName(''''401700000809723'''', null)'')'

EXEC @Sql2

This code also results in an error:

DECLARE @PolicyKey varchar(50) = '401700000809723'
DECLARE @Sql3 nvarchar(1000) = 'SELECT A FROM OPENQUERY([SERVER20] , ''SELECT COUNT(9) 
   AS A FROM MyData.dbo.MyFunctionName('''''+ @PolicyKey +''''', null)'')' 

EXEC @Sql3

Error in case 2 and 3 is:

Msg 203, Level 16, State 2, Line 38
The name 'SELECT A FROM OPENQUERY([SERVER20] , 'SELECT COUNT(9) AS A FROM MyData.dbo.MyFunctionName(''401700000809723'', null)')' is not a valid identifier.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
fahime abouhamze
  • 328
  • 3
  • 16

1 Answers1

0

I think variable query is fine that is stored in a variable, but problem with execution:

EXEC (@Sql2);
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Parth M. Dave
  • 853
  • 1
  • 5
  • 16