2017-03-03 105 views
1

我想写查询到远程Azure SQL数据库。U-SQL查询数据源

我通过查询数据源跟随tutorial - 方法1

我成功从教程运行查询:

@results1 = 
    SELECT * 
    FROM EXTERNAL MyAzureSQLDBDataSource EXECUTE @"SELECT @@SERVERNAME AS serverName, GETDATE() AS dayTime, DB_NAME() AS databaseName"; 

但是......

我想将此查询更新为以下形式:

DECLARE @queryA string = @"SELECT @@SERVERNAME AS serverName, GETDATE() AS dayTime, DB_NAME() AS databaseName"; 

@results2 = 
    SELECT * 
    FROM EXTERNAL MyAzureSQLDBDataSource EXECUTE @queryA; 

我得到一个错误

E_CSC_USER_SYNTAXERROR: syntax error. Expected one of: string-literal

任何想法,为什么我不能使用存储在字符串值查询?

在真正的查询中,我需要根据where语句中的参数动态创建查询。

预先感谢您

回答

0

根据这篇文章https://msdn.microsoft.com/en-us/library/azure/mt621291.aspx你可以只提供文字,不是一个变量:

EXECUTE csharp_string_literal

The string literal contains a query expression in the language supported by the remote data source. E.g., if the data source is an Azure SQL Database, then the query string would be T-SQL.

+0

谢谢。太可惜了。 – peterko

+0

为什么不可以使用文字连接?例如'@ results1 = SELECT * FROM EXTERNAL MyAzureSQLDBDataSource EXECUTE @“SELECT @@ SERVERNAME AS serverName,GETDATE()AS dayTime,”+ @“DB_NAME()AS databaseName”;' – peterko