Snowflake – 语法错误:意外的’‘。查询大小限制?

huangapple go评论92阅读模式
英文:

SNowflake - Syntax error: unexpected '<EOF>'. Query size limit?

问题

您遇到的问题可能与过程中的字符数限制有关。尝试通过删除注释来增加列数可能有效,因为注释会增加字符数。您可以尝试优化您的代码以减少字符数,或者查看您使用的数据库管理系统是否有字符数限制的文档,以了解更多关于限制的信息。

不过,请注意,对于复杂的存储过程,过多的列可能会使代码难以维护和理解。在添加大量列之前,最好考虑是否可以重新设计数据库模式,以更好地满足您的需求。

如果您需要进一步的帮助或解决方案,请提供更多信息,我将尽力提供支持。

英文:

I have a procedure and I want to modify this. When I use this request:

  1. CREATE OR REPLACE PROCEDURE import_stage_sfr_ac_reeng_fixe_handicall_bordeaux(p_loading_mode VARCHAR)
  2. RETURNS VARCHAR NOT NULL
  3. LANGUAGE SQL
  4. AS
  5. BEGIN
  6. IF (:p_loading_mode =&#39;incremental&#39;) THEN
  7. COPY INTO SFR_AC_REENG_FIXE_HANDICALL_BORDEAUX (
  8. V_NUM_COMMANDE_MIG,
  9. V_SITE_CMD,
  10. V_ACTIVITE_EZY,
  11. V_TYPE_AC,
  12. D_JOUR_CMD,
  13. D_JOUR_PANIER,
  14. V_SEMAINE_CMD,
  15. V_MOIS_CMD,
  16. V_LOGIN_CC_CMD,
  17. V_NUM_CONTRAT,
  18. V_TYPE_ACTE,
  19. B_MIG,
  20. V_COURANT_PTA_MIG,
  21. V_LIBL_COURANT_PTA_MIG,
  22. V_FUTUR_PTA_MIG,
  23. V_LIBL_FUTUR_PTA_MIG,
  24. V_LIBL_FUTUR_PTA_MIG_COURT,
  25. B_REMISE,
  26. V_LIBL_REMISE,
  27. N_MT_REMISE_M_TTC,
  28. B_USAGE,
  29. V_LIBL_USAGE,
  30. V_NOM,
  31. V_PRENOM,
  32. N_FACIAL_AVANT,
  33. N_FACIAL_APRES,
  34. N_REMISE_AVANT,
  35. N_REMISE_APRES,
  36. N_MOUVEMENT_VALEUR,
  37. V_CODE_CAMPAGNE,
  38. B_FLAG_HBD,
  39. V_CODE_CAMPAGNE,
  40. V_CODE_LOT,
  41. V_RAC,
  42. V_TECH_NOM_FICHIER,
  43. V_TECH_STATUT_TRAITEMENT,
  44. V_TECH_NOM_TRAITEMENT,
  45. TS_TECH_DEBUT_TRAITEMENT
  46. ) FROM (
  47. SELECT
  48. $12,
  49. $1,
  50. $2,
  51. $3,
  52. TO_DATE($4, &#39;YYYY-MM-DD&#39;),
  53. TO_DATE($5, &#39;YYYY-MM-DD&#39;),
  54. $6,
  55. $7,
  56. $8,
  57. $9,
  58. $10,
  59. CAST($11 AS BOOLEAN),
  60. $13,
  61. $14,
  62. $15,
  63. $16,
  64. $17,
  65. CAST($18 AS BOOLEAN),
  66. $19,
  67. CAST($20 AS NUMBER(10, 0)),
  68. CAST($21 AS BOOLEAN),
  69. $22,
  70. $23,
  71. $24,
  72. CAST(REPLACE($25, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  73. CAST(REPLACE($26, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  74. CAST(REPLACE($27, &#39;,&#39;, &#39;.&#39;) AS NUMBER(4, 2)),
  75. CAST(REPLACE($28, &#39;,&#39;, &#39;.&#39;) AS NUMBER(4, 2)),
  76. CAST(REPLACE($29, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  77. $30,
  78. TO_BOOLEAN($31),
  79. $32,
  80. $33,
  81. $34,
  82. METADATA$FILENAME,
  83. &#39;I&#39;,
  84. &#39;INGEST MODE : &#39;|| :p_loading_mode,
  85. current_timestamp(0)
  86. FROM @ES_SFR )
  87. FILE_FORMAT = ( FORMAT_NAME = FF_INGEST_CSV_SFR)
  88. PATTERN = &#39;.*incremental.*ac_reeng_fixe_handicall_bordeaux.*\.csv&#39;;
  89. END IF;

It work. But if I add just a column, I have the message Syntax error: unexpected &#39;&lt;EOF&gt;&#39;. no matter the column.

Example:

  1. CREATE OR REPLACE PROCEDURE import_stage_sfr_ac_reeng_fixe_handicall_bordeaux(p_loading_mode VARCHAR)
  2. RETURNS VARCHAR NOT NULL
  3. LANGUAGE SQL
  4. AS
  5. BEGIN
  6. IF (:p_loading_mode =&#39;incremental&#39;) THEN
  7. COPY INTO SFR_AC_REENG_FIXE_HANDICALL_BORDEAUX (
  8. V_NUM_COMMANDE_MIG,
  9. V_SITE_CMD,
  10. V_ACTIVITE_EZY,
  11. V_TYPE_AC,
  12. D_JOUR_CMD,
  13. D_JOUR_PANIER,
  14. V_SEMAINE_CMD,
  15. V_MOIS_CMD,
  16. V_LOGIN_CC_CMD,
  17. V_NUM_CONTRAT,
  18. V_TYPE_ACTE,
  19. B_MIG,
  20. V_COURANT_PTA_MIG,
  21. V_LIBL_COURANT_PTA_MIG,
  22. V_FUTUR_PTA_MIG,
  23. V_LIBL_FUTUR_PTA_MIG,
  24. V_LIBL_FUTUR_PTA_MIG_COURT,
  25. B_REMISE,
  26. V_LIBL_REMISE,
  27. N_MT_REMISE_M_TTC,
  28. B_USAGE,
  29. V_LIBL_USAGE,
  30. V_NOM,
  31. V_PRENOM,
  32. N_FACIAL_AVANT,
  33. N_FACIAL_APRES,
  34. N_REMISE_AVANT,
  35. N_REMISE_APRES,
  36. N_MOUVEMENT_VALEUR,
  37. V_CODE_CAMPAGNE,
  38. B_FLAG_HBD,
  39. V_CODE_CAMPAGNE,
  40. V_CODE_LOT,
  41. V_RAC,
  42. V_PROMO_TR,
  43. V_TECH_NOM_FICHIER,
  44. V_TECH_STATUT_TRAITEMENT,
  45. V_TECH_NOM_TRAITEMENT,
  46. TS_TECH_DEBUT_TRAITEMENT
  47. ) FROM (
  48. SELECT
  49. $12,
  50. $1,
  51. $2,
  52. $3,
  53. TO_DATE($4, &#39;YYYY-MM-DD&#39;),
  54. TO_DATE($5, &#39;YYYY-MM-DD&#39;),
  55. $6,
  56. $7,
  57. $8,
  58. $9,
  59. $10,
  60. CAST($11 AS BOOLEAN),
  61. $13,
  62. $14,
  63. $15,
  64. $16,
  65. $17,
  66. CAST($18 AS BOOLEAN),
  67. $19,
  68. CAST($20 AS NUMBER(10, 0)),
  69. CAST($21 AS BOOLEAN),
  70. $22,
  71. $23,
  72. $24,
  73. CAST(REPLACE($25, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  74. CAST(REPLACE($26, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  75. CAST(REPLACE($27, &#39;,&#39;, &#39;.&#39;) AS NUMBER(4, 2)),
  76. CAST(REPLACE($28, &#39;,&#39;, &#39;.&#39;) AS NUMBER(4, 2)),
  77. CAST(REPLACE($29, &#39;,&#39;, &#39;.&#39;) AS NUMBER(6, 3)),
  78. $30,
  79. TO_BOOLEAN($31),
  80. $32,
  81. $33,
  82. $34,
  83. $35,
  84. METADATA$FILENAME,
  85. &#39;I&#39;,
  86. &#39;INGEST MODE : &#39;|| :p_loading_mode,
  87. current_timestamp(0)
  88. FROM @ES_SFR )
  89. FILE_FORMAT = ( FORMAT_NAME = FF_INGEST_CSV_SFR)
  90. PATTERN = &#39;.*incremental.*ac_reeng_fixe_handicall_bordeaux.*\.csv&#39;;
  91. END IF;

I search since this morning, I was able to add more column by deleting the comments. I therefore really wonder if this is not a limitation of the number of characters in the procedure. Any idea ?

Thanks

答案1

得分: 1

要解决问题,您需要在代码块周围添加$$符号进行引用。

示例:

  1. CREATE OR REPLACE PROCEDURE import_stage_sfr_ac_reeng_fixe_handicall_bordeaux(p_loading_mode VARCHAR)
  2. RETURNS VARCHAR NOT NULL
  3. LANGUAGE SQL
  4. AS
  5. $$
  6. BEGIN
  7. --您的代码脚本块
  8. END
  9. $$;

文档参考。

英文:

To fix the issue you need to add the $$ sings to quote the code block.

Example:

  1. CREATE OR REPLACE PROCEDURE import_stage_sfr_ac_reeng_fixe_handicall_bordeaux(p_loading_mode VARCHAR)
  2. RETURNS VARCHAR NOT NULL
  3. LANGUAGE SQL
  4. AS
  5. $$
  6. BEGIN
  7. --your code the scripting block
  8. END
  9. $$;

Doc reference.

huangapple
  • 本文由 发表于 2023年5月17日 20:51:32
  • 转载请务必保留本文链接:https://go.coder-hub.com/76272324.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定