将SSMS的EXEC存储过程转Snowflake的CALL遇语法错误求助
问题排查与修复
核心语法错误分析
从你提供的表达式和报错信息(截图显示SQL编译错误:第3行第0位意外出现'PRD_DB')来看,问题出在第三个参数的拼接逻辑上:
你的表达式生成的SQL中,第三个参数被包裹在单引号中,变成了字符串常量:
'PRD_DB.DW_RPT_SC.USP_CLIENT_REPORT_ZERO_PARAMTER_VALUES.VQ_NAME'
而Snowflake存储过程如果期望这个参数是**标识符(如视图/表名)**而非字符串常量,单引号会直接导致语法解析失败。同时你在拼接时额外添加的单引号属于冗余内容,进一步加剧了格式错误。
修复后的表达式
去掉第三个参数前后的冗余单引号,调整后的表达式如下:
="CALL PRD_DB.DW_RPT_SC.USP_CLIENT_REPORT_ZERO_PARAMTER_VALUES( to_date('" + FormatDateTime(Parameters!Start_Date.Value,DateFormat.ShortDate) + "'), to_date('" + FormatDateTime(Parameters!End_Date.Value,DateFormat.ShortDate) + "'), PRD_DB.DW_RPT_SC.USP_CLIENT_REPORT_ZERO_PARAMTER_VALUES.VQ_NAME );"
额外注意点
- 存储过程名中的
PARAMTER存在拼写错误(正确应为PARAMETER),如果这是存储过程的实际命名则无需修改,否则需要同步修正存储过程名称。 - 若第三个参数确实需要传递字符串常量,需确保单引号正确闭合,但结合报错信息判断这种可能性极低。
内容的提问来源于stack exchange,提问作者Arsee
相关产品推荐
相关产品推荐

