繁体   English   中英

SQL Azure-创建外部数据源:位置作为参数?

[英]SQL Azure - Create External Data Source: Location as a Parameter?

我正在尝试创建一个SQL存储过程,该过程将创建一个外部数据源。 该位置将是传递到过程中的参数(例如,天青存储帐户容器)。 我无法接受Location变量(如下面的代码片段所示)。

DECLARE @Location varchar(max)
SET @Location = 'https://somestorageaccount.blob.core.windows.net/uploads'

PRINT @Location
--DROP EXTERNAL DATA SOURCE uploads

CREATE EXTERNAL DATA SOURCE uploads
WITH
(
    TYPE = BLOB_STORAGE,
    LOCATION = @Location,
    CREDENTIAL = azurecred
);

错误消息为:

Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '@Location'.

如果带单引号的网址替换了变量,则此方法有效。

CREATE EXTERNAL DATA SOURCE uploads
WITH
(
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://somestorageaccount.blob.core.windows.net/uploads'
    CREDENTIAL = azurecred
);

经过试验,我无法使它正常工作。 可能吗?

您不能在DDL语句中使用变量。 尝试使用动态SQL-形成DDL的字符串,并使用sp_executesql存储过程执行它

ALTER PROCEDURE CETFromNewLocation    AS

BEGIN

DECLARE @location varchar(100)

SET @location = 'data/2015/2015831'

DECLARE @CreateExternalTableString varchar(100)

SET @CreateExternalTableString = 
                                    'Create External TABLE stg_tbl (
                                                  [DateId] int NULL
                                    )
                                    WITH (LOCATION = ' + @location + ',                                      
                                             DATA_SOURCE = my_external_source,
                                             FILE_FORMAT = my_external_file_format,
                                             REJECT_TYPE = VALUE,
                                             REJECT_VALUE = 0
                                    )'

EXEC sp_executesql @CreateExternalTableString

END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM