雪花声明在程序内不起作用

Snowflake Statement not working within procedure

我写了一个 SQL 声明。当我正常执行该语句时,它会起作用。但是在存储过程中出现以下错误:

SQL compilation error: error line 1 at position 43 invalid identifier 'PA.S_ID' At Statement.execute, line 13 position 25

CREATE OR REPLACE PROCEDURE DWH.TEST.FILL_BUSHARES()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS 
$$

    function executeSQL(SQL ) {
               var rows_affected = 0;

          // Prepare statement.
          var stmt = snowflake.createStatement(
                 {
                 sqlText: SQL
                 }
              );
          // Execute Statement
          var res = stmt.execute();
          rows_affected = res.getNumRowsAffected();
          return rows_affected;
   
    }
    

    sql_fall1 = executeSQL("INSERT INTO DWH.TEMP.CM_BU_SHARES "+ 
                                " SELECT  pa.S_ID, " +
                                " pa.PRCTR, " +
                                " pa.MATNR, " +
                                " pa.KUNNR " +
                                " ,100 as invalid_Share     --00 " +
                                " ,0 as OFIS_Share          --10 " +
                                " ,0 as CREHO_Share         --20 " +
                                " ,0 as COWO_Share          --30 " +
                                " ,0 as TECH_Share          --40 " +
                                " ,0 as Lifestyle_Share     --50 " +
                                " ,0 as NISO_Share          --60 " +
                            "FROM DWH.TEMP.CMPREP_PROFITABILITYANALYSIS as PA " 
                    );
                                
    var returnStatement = "test" ;                        
    return returnStatement;    

    $$;

但声明是正确的。如果我复制声明,将其添加到 Notepad++、crtl+h 并将所有 " 替换为空,将所有 + 替换为空,我 运行 它在经典控制台中工作。

"INSERT INTO DWH.TEMP.CM_BU_SHARES "+ 
                                " SELECT  pa.S_ID, " +
                                " pa.PRCTR, " +
                                " pa.MATNR, " +
                                " pa.KUNNR " +
                                " ,100 as invalid_Share     --00 " +
                                " ,0 as OFIS_Share          --10 " +
                                " ,0 as CREHO_Share         --20 " +
                                " ,0 as COWO_Share          --30 " +
                                " ,0 as TECH_Share          --40 " +
                                " ,0 as Lifestyle_Share     --50 " +
                                " ,0 as NISO_Share          --60 " +
                            "FROM DWH.TEMP.CMPREP_PROFITABILITYANALYSIS PA " 

我自己无法解释为什么它不能在存储过程中运行。 Google 没有帮助。标识符没有错。它不区分大小写。相同的查询在没有 " 和 + 的情况下也有效。

我认为你的评论标志打破了SQL。你能试试这个吗?

sql_fall1 = executeSQL("INSERT INTO DWH.TEMP.CM_BU_SHARES "+ 
                                " SELECT  pa.S_ID, " +
                                " pa.PRCTR, " +
                                " pa.MATNR, " +
                                " pa.KUNNR " +
                                " ,100 as invalid_Share     --00 \n" +
                                " ,0 as OFIS_Share          --10 \n" +
                                " ,0 as CREHO_Share         --20 \n" +
                                " ,0 as COWO_Share          --30 \n" +
                                " ,0 as TECH_Share          --40 \n" +
                                " ,0 as Lifestyle_Share     --50 \n" +
                                " ,0 as NISO_Share          --60 \n" +
                            "FROM DWH.TEMP.CMPREP_PROFITABILITYANALYSIS as PA " 
                    );

如果还是失败,可以运行不评论吗?

sql_fall1 = executeSQL("INSERT INTO DWH.TEMP.CM_BU_SHARES "+ 
                                " SELECT  pa.S_ID, " +
                                " pa.PRCTR, " +
                                " pa.MATNR, " +
                                " pa.KUNNR " +
                                " ,100 as invalid_Share      " +
                                " ,0 as OFIS_Share           " +
                                " ,0 as CREHO_Share          " +
                                " ,0 as COWO_Share           " +
                                " ,0 as TECH_Share           " +
                                " ,0 as Lifestyle_Share      " +
                                " ,0 as NISO_Share           " +
                            "FROM DWH.TEMP.CMPREP_PROFITABILITYANALYSIS as PA " 
                    );