Snowflake带日期范围与布尔参数的存储过程调用问题及SSRS适配
解决Snowflake存储过程调用时"Bind variable :STARTDATE not set"错误
问题根源
你混淆了Snowflake的会话变量和客户端绑定变量的语法:
- 用
SET设置的是Snowflake会话级变量,需要用$变量名引用; :变量名是客户端驱动(如JDBC/ODBC)的绑定变量语法,需要在调用前由客户端注入值,和Snowflake的SET变量不互通。
直接解决方法(Snowflake控制台/脚本调用)
如果是在Snowflake界面或脚本里手动调用,把CALL语句里的:变量名改成$变量名即可:
-- 先设置会话变量 SET STARTDATE = '2024-01-01'; SET ENDDATE = '2024-01-31'; SET INCLUDE_CONSULTS = TRUE; SET INTERVAL_DATE = 'daily'; -- 用$引用会话变量调用存储过程 CALL CDW_PRD_CALL_DB.CDW_CONTACTCENTER_RPT_SC.USP_REPORTS_CCP_KVPMAP_INTERVAL($STARTDATE, $ENDDATE, $INCLUDE_CONSULTS, $INTERVAL_DATE);
SSRS中调用的正确姿势
如果要在SSRS里对接Snowflake存储过程,按以下步骤操作:
- 确保SSRS使用Snowflake官方ODBC/JDBC驱动配置数据源;
- 数据集查询语句用
?作为参数占位符:CALL CDW_PRD_CALL_DB.CDW_CONTACTCENTER_RPT_SC.USP_REPORTS_CCP_KVPMAP_INTERVAL(?, ?, ?, ?); - 进入数据集的「参数映射」界面,把SSRS的
@StartDate、@EndDate等参数依次映射到对应的?占位符上,注意参数类型要和存储过程的入参类型匹配。
内容的提问来源于stack exchange,提问作者Arsee
相关产品推荐
相关产品推荐

