雪花SQL汇编错误与声明块创建任务创建

发布于 2025-01-30 07:03:55 字数 2268 浏览 3 评论 0原文

尝试创建一个具有两个声明的VARCHAR变量的任务(从雪花工作表)时,给出了AN< eof>的错误。在声明第一个变量时在线上。我不确定为什么会发生这种情况,因为在雪花文档中的示例中,有关创建任务创建相同的语法以创建变量的示例。

这是查询。

create or replace task TEST_STORED_PROC_TASK
    warehouse = COMPUTE_XS
    schedule = '1 minute'
AS
DECLARE
    delete_query VARCHAR;
    insert_query VARCHAR;
BEGIN
    delete_query := 'DELETE FROM TEST_TASK_TBL_DEST
            USING TEST_STORED_PROC_TASK_STREAM
            WHERE TEST_TASK_TBL_DEST.DATA_INDEX = TEST_STORED_PROC_TASK_STREAM.DATA_INDEX
                  AND TEST_STORED_PROC_TASK_STREAM.METADATA$ISUPDATE;';
    insert_query := 'INSERT INTO TEST_TASK_TBL_DEST (DATA_INDEX ,COMP_ID ,ACCOUNT_ID ,COMP_VERSION ,NAME ,DESCRIPTION ,OBJECT_DICT ,ACTION_TYPE ,CONNECTOR_TYPE ,OUTPUT_PROFILE ,   PARAMETER_PROFILE)
              WITH DEDUPED_COMP AS (
                SELECT DATA_INDEX,COMP_ID,ACCOUNT_ID,COMP_VERSION,NAME, DESCRIPTION, PROPERTIES,  ROW_NUMBER() OVER (PARTITION BY COMP_ID ORDER BY COMP_VERSION DESC) AS ROW_NUM
                FROM TEST_STORED_PROC_TASK_STREAM
                WHERE METADATA$ACTION = \'INSERT\'
                QUALIFY 1 = ROW_NUM
              ),
              GROUPED_PROPS AS (
                SELECT ANY_VALUE(DATA_INDEX) AS DATA_INDEX, COMP_ID, ANY_VALUE(ACCOUNT_ID) AS ACCOUNT_ID, ANY_VALUE(COMP_VERSION) AS COMP_VERSION,
                       ANY_VALUE(NAME) AS NAME, ANY_VALUE(DESCRIPTION) AS DESCRIPTION, OBJECT_AGG(DISTINCT XMLGET(PROPS.Value,\'Name\'):"$"::string,
                       XMLGET(PROPS.Value,\'Value\'):"$"::VARIANT) AS OBJECT_DICT
                FROM DEDUPED_COMP,
                LATERAL FLATTEN(INPUT=>PROPERTIES, MODE=> \'ARRAY\', OUTER=>TRUE) PROPS
                GROUP BY COMP_ID
              )
              SELECT *, OBJECT_DICT:"action-type"::string AS ACTION_TYPE, OBJECT_DICT:"connector-type"::string AS CONNECTOR_TYPE,
                     OBJECT_DICT:"output-profile"::string AS OUTPUT_PROFILE, OBJECT_DICT:"parameter-profile"::string AS PARAMETER_PROFILE
              FROM GROUPED_PROPS;
            ';
    call RUN_TASK_QUERIES(ARRAY_CONSTRUCT(:delete_query, :insert_query));
END;

这是错误

SQL compilation error: syntax error line 6 at position 25 unexpected '<EOF>'.

When trying to create a task(from a Snowflake worksheet) with two declared variables of type VARCHAR, an error is given for an <EOF> on the line when declaring the first variable. I am unsure of why this happens since in the examples in Snowflakes documentation on task creation the same syntax to create a variable is used.

Here is the query.

create or replace task TEST_STORED_PROC_TASK
    warehouse = COMPUTE_XS
    schedule = '1 minute'
AS
DECLARE
    delete_query VARCHAR;
    insert_query VARCHAR;
BEGIN
    delete_query := 'DELETE FROM TEST_TASK_TBL_DEST
            USING TEST_STORED_PROC_TASK_STREAM
            WHERE TEST_TASK_TBL_DEST.DATA_INDEX = TEST_STORED_PROC_TASK_STREAM.DATA_INDEX
                  AND TEST_STORED_PROC_TASK_STREAM.METADATA$ISUPDATE;';
    insert_query := 'INSERT INTO TEST_TASK_TBL_DEST (DATA_INDEX ,COMP_ID ,ACCOUNT_ID ,COMP_VERSION ,NAME ,DESCRIPTION ,OBJECT_DICT ,ACTION_TYPE ,CONNECTOR_TYPE ,OUTPUT_PROFILE ,   PARAMETER_PROFILE)
              WITH DEDUPED_COMP AS (
                SELECT DATA_INDEX,COMP_ID,ACCOUNT_ID,COMP_VERSION,NAME, DESCRIPTION, PROPERTIES,  ROW_NUMBER() OVER (PARTITION BY COMP_ID ORDER BY COMP_VERSION DESC) AS ROW_NUM
                FROM TEST_STORED_PROC_TASK_STREAM
                WHERE METADATA$ACTION = \'INSERT\'
                QUALIFY 1 = ROW_NUM
              ),
              GROUPED_PROPS AS (
                SELECT ANY_VALUE(DATA_INDEX) AS DATA_INDEX, COMP_ID, ANY_VALUE(ACCOUNT_ID) AS ACCOUNT_ID, ANY_VALUE(COMP_VERSION) AS COMP_VERSION,
                       ANY_VALUE(NAME) AS NAME, ANY_VALUE(DESCRIPTION) AS DESCRIPTION, OBJECT_AGG(DISTINCT XMLGET(PROPS.Value,\'Name\'):"
quot;::string,
                       XMLGET(PROPS.Value,\'Value\'):"
quot;::VARIANT) AS OBJECT_DICT
                FROM DEDUPED_COMP,
                LATERAL FLATTEN(INPUT=>PROPERTIES, MODE=> \'ARRAY\', OUTER=>TRUE) PROPS
                GROUP BY COMP_ID
              )
              SELECT *, OBJECT_DICT:"action-type"::string AS ACTION_TYPE, OBJECT_DICT:"connector-type"::string AS CONNECTOR_TYPE,
                     OBJECT_DICT:"output-profile"::string AS OUTPUT_PROFILE, OBJECT_DICT:"parameter-profile"::string AS PARAMETER_PROFILE
              FROM GROUPED_PROPS;
            ';
    call RUN_TASK_QUERIES(ARRAY_CONSTRUCT(:delete_query, :insert_query));
END;

Here is the error

SQL compilation error: syntax error line 6 at position 25 unexpected '<EOF>'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小傻瓜 2025-02-06 07:03:56

使用Snowsight时,该代码是无错误执行的。

如果使用classicui,则使用立即执行$$ ... $$将其编译:

create or replace task TEST_STORED_PROC_TASK
    warehouse = COMPUTE_XS
    schedule = '1 minute'
AS
EXECUTE IMMEDIATE $
DECLARE
    delete_query VARCHAR;
    insert_query VARCHAR;
BEGIN
    delete_query := 'DELETE FROM TEST_TASK_TBL_DEST
            USING TEST_STORED_PROC_TASK_STREAM
            WHERE TEST_TASK_TBL_DEST.DATA_INDEX = TEST_STORED_PROC_TASK_STREAM.DATA_INDEX
                  AND TEST_STORED_PROC_TASK_STREAM.METADATA$ISUPDATE;';
    insert_query := 'INSERT INTO TEST_TASK_TBL_DEST (DATA_INDEX ,COMP_ID ,ACCOUNT_ID ,COMP_VERSION ,NAME ,DESCRIPTION ,OBJECT_DICT ,ACTION_TYPE ,CONNECTOR_TYPE ,OUTPUT_PROFILE ,   PARAMETER_PROFILE)
              WITH DEDUPED_COMP AS (
                SELECT DATA_INDEX,COMP_ID,ACCOUNT_ID,COMP_VERSION,NAME, DESCRIPTION, PROPERTIES,  ROW_NUMBER() OVER (PARTITION BY COMP_ID ORDER BY COMP_VERSION DESC) AS ROW_NUM
                FROM TEST_STORED_PROC_TASK_STREAM
                WHERE METADATA$ACTION = \'INSERT\'
                QUALIFY 1 = ROW_NUM
              ),
              GROUPED_PROPS AS (
                SELECT ANY_VALUE(DATA_INDEX) AS DATA_INDEX, COMP_ID, ANY_VALUE(ACCOUNT_ID) AS ACCOUNT_ID, ANY_VALUE(COMP_VERSION) AS COMP_VERSION,
                       ANY_VALUE(NAME) AS NAME, ANY_VALUE(DESCRIPTION) AS DESCRIPTION, OBJECT_AGG(DISTINCT XMLGET(PROPS.Value,\'Name\'):"$"::string,
                       XMLGET(PROPS.Value,\'Value\'):"$"::VARIANT) AS OBJECT_DICT
                FROM DEDUPED_COMP,
                LATERAL FLATTEN(INPUT=>PROPERTIES, MODE=> \'ARRAY\', OUTER=>TRUE) PROPS
                GROUP BY COMP_ID
              )
              SELECT *, OBJECT_DICT:"action-type"::string AS ACTION_TYPE, OBJECT_DICT:"connector-type"::string AS CONNECTOR_TYPE,
                     OBJECT_DICT:"output-profile"::string AS OUTPUT_PROFILE, OBJECT_DICT:"parameter-profile"::string AS PARAMETER_PROFILE
              FROM GROUPED_PROPS;
            ';
    call RUN_TASK_QUERIES(ARRAY_CONSTRUCT(:delete_query, :insert_query));
END;
$;

The code is executed without error when using Snowsight.

If the ClassicUI is used then wrapping with EXECUTE IMMEDIATE $$ ... $$ will compile it:

create or replace task TEST_STORED_PROC_TASK
    warehouse = COMPUTE_XS
    schedule = '1 minute'
AS
EXECUTE IMMEDIATE $
DECLARE
    delete_query VARCHAR;
    insert_query VARCHAR;
BEGIN
    delete_query := 'DELETE FROM TEST_TASK_TBL_DEST
            USING TEST_STORED_PROC_TASK_STREAM
            WHERE TEST_TASK_TBL_DEST.DATA_INDEX = TEST_STORED_PROC_TASK_STREAM.DATA_INDEX
                  AND TEST_STORED_PROC_TASK_STREAM.METADATA$ISUPDATE;';
    insert_query := 'INSERT INTO TEST_TASK_TBL_DEST (DATA_INDEX ,COMP_ID ,ACCOUNT_ID ,COMP_VERSION ,NAME ,DESCRIPTION ,OBJECT_DICT ,ACTION_TYPE ,CONNECTOR_TYPE ,OUTPUT_PROFILE ,   PARAMETER_PROFILE)
              WITH DEDUPED_COMP AS (
                SELECT DATA_INDEX,COMP_ID,ACCOUNT_ID,COMP_VERSION,NAME, DESCRIPTION, PROPERTIES,  ROW_NUMBER() OVER (PARTITION BY COMP_ID ORDER BY COMP_VERSION DESC) AS ROW_NUM
                FROM TEST_STORED_PROC_TASK_STREAM
                WHERE METADATA$ACTION = \'INSERT\'
                QUALIFY 1 = ROW_NUM
              ),
              GROUPED_PROPS AS (
                SELECT ANY_VALUE(DATA_INDEX) AS DATA_INDEX, COMP_ID, ANY_VALUE(ACCOUNT_ID) AS ACCOUNT_ID, ANY_VALUE(COMP_VERSION) AS COMP_VERSION,
                       ANY_VALUE(NAME) AS NAME, ANY_VALUE(DESCRIPTION) AS DESCRIPTION, OBJECT_AGG(DISTINCT XMLGET(PROPS.Value,\'Name\'):"
quot;::string,
                       XMLGET(PROPS.Value,\'Value\'):"
quot;::VARIANT) AS OBJECT_DICT
                FROM DEDUPED_COMP,
                LATERAL FLATTEN(INPUT=>PROPERTIES, MODE=> \'ARRAY\', OUTER=>TRUE) PROPS
                GROUP BY COMP_ID
              )
              SELECT *, OBJECT_DICT:"action-type"::string AS ACTION_TYPE, OBJECT_DICT:"connector-type"::string AS CONNECTOR_TYPE,
                     OBJECT_DICT:"output-profile"::string AS OUTPUT_PROFILE, OBJECT_DICT:"parameter-profile"::string AS PARAMETER_PROFILE
              FROM GROUPED_PROPS;
            ';
    call RUN_TASK_QUERIES(ARRAY_CONSTRUCT(:delete_query, :insert_query));
END;
$;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文