【问题标题】:SQL compilation error: syntax error line 1 at position 0 unexpected 'if'. - SnowflakeSQL 编译错误:位置 0 处的语法错误第 1 行意外“if”。 - 雪花
【发布时间】:2022-01-02 16:17:06
【问题描述】:

这是在雪花中调用另一个 sp 中的 sp 时导致错误消息的代码。

if ((to_number((to_char(CURRENT_DATE,'dd')))==5))
CALL STG.BISON_LAND_DATA('`+ID+`'::VARCHAR,CURRENT_TIMESTAMP()::TIMESTAMP_NTZ::VARCHAR,
'{"name": "`+name+`","task_name": "`+task_name+`","sp": "STG.BISON_LAND_DATA","up_date": "`+upd_date+`","date": "`+date+`","id": "`+ID+`"}'::VARCHAR)

如何解决此问题?

【问题讨论】:

  • 您为什么要创建另一个与上一个问题重复的问题?

标签: snowflake-cloud-data-platform


【解决方案1】:

prior question 的重复答案:

to_char(CURRENT_DATE,'dd') 为您提供月份中的某一天,但更简单的是使用DAYOFMONTH,因此第一行可以变成:

if( DAYOFMONTH(CURRENT_DATE) == 5 ) {
    ...
}

或者你可以使用DATE_PART(day, CURRENT_DATE) == 5

您的 StoredProc 调用可以分开来看看什么是有意义的和不喜欢的:

var parm1 = '`+ID+`'::VARCHAR;
var parm2 = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ::VARCHAR;
var json_str = '{"name": "`+name+`","task_name": "`+task_name+`","sp": "STG.BISON_LAND_DATA","up_date": "`+upd_date+`","date": "`+date+`","id": "`+ID+`"}'::VARCHAR;
CALL STG.BISON_LAND_DATA(parm1, parm2, json_str);

在所示代码的上下文中,使用所有三种引号样式是没有意义的,因为我们以 ' 引号开始字符串,要打破它们以进行字符串连接,您可以只使用普通的单引号再次引用。

var json_str = '{"name": "'+ name +'","task_name": "'+ task_name +'","sp": "STG.BISON_LAND_DATA","up_date": "'+ upd_date +'","date": "'+ date +'","id": "'+ ID +'"}'::VARCHAR;

parm1 只是一个 toString() 因此可能是

var parm1 = ID.toString();

json_str 是一个代表 json 对象的字符串,假设你在 JavaScript 中,你可以只创建对象,然后 toString() 那个.. 这样就变成了:

if( DAYOFMONTH( CURRENT_DATE ) == 5 ) {
    var parm1 = ID.toString();
    var parm2 = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ::VARCHAR;
    var json_obj = {name: name, task_name: task_name, sp: "STG.BISON_LAND_DATA", up_date: upd_date, date: date, id: ID };
    CALL STG.BISON_LAND_DATA(parm1, parm2, json_obj.toString());
}

【讨论】:

    【解决方案2】:

    我不是最擅长 SQL 或其中任何一个,但我认为 if 中的语句应该放在大括号中 ({})。

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2017-10-21
      相关资源
      最近更新 更多