Teradata存储过程参数日期格式配置部署报错求助
Teradata存储过程参数配置错误排查及修正
错误原因
Teradata SPL(存储过程语言)不支持在存储过程的参数声明中直接指定DATE FORMAT。你在LV_EFFECTIVE_START_DT和LV_EFFECTIVE_END_DT参数后添加的FORMAT 'YYYY-MM-DD'属于非法语法,导致解析器无法正确识别参数列表的结束位置,从而抛出SPL1076(缺少右括号)和SPL1048(意外分号)的错误。
修正方案
- 移除参数声明中的格式指定:参数类型仅保留
DATE,去掉FORMAT 'YYYY-MM-DD'。 - 日期格式控制方式:
- 调用存储过程时,确保传入的日期值符合Teradata默认的日期格式(通常为
YYYY-MM-DD,与你指定的格式一致,无需额外转换); - 如果需要接收特定格式的字符串参数,可将参数类型改为
VARCHAR,在存储过程内部通过TO_DATE函数转换为DATE类型,例如:TO_DATE(LV_EFFECTIVE_START_DT_STR, 'YYYY-MM-DD')。
- 调用存储过程时,确保传入的日期值符合Teradata默认的日期格式(通常为
修正后的存储过程参数声明代码
REPLACE PROCEDURE UDMTOOL_STG_USER.TDPRC_SALES_ESL_INSERT_GLOBAL_APPLE_BRAND_QUERIES ( IN LV_COUNTRY_CD VARCHAR(100), IN LV_SEARCHED_KEYWORD_VAL VARCHAR(300) CHARACTER SET UNICODE, IN LV_SEARCHED_KEYWORD_VAL_ENG VARCHAR(300), IN LV_EFFECTIVE_START_DT DATE, IN LV_EFFECTIVE_END_DT DATE, IN LV_BRAND_NAME VARCHAR(100), IN LV_INSERT_TS VARCHAR(19), IN LV_UPDATED_ON VARCHAR(19), IN LV_UPDATED_BY VARCHAR(100), IN LN_REQUEST_ID INTEGER, OUT LV_OUT_STATUS VARCHAR(100) ) -- 后续的存储过程逻辑代码 BEGIN -- 这里编写你的存储过程执行逻辑 SET LV_OUT_STATUS = 'SUCCESS'; END;
内容的提问来源于stack exchange,提问作者Anjaneyulu Godduvelagala
相关产品推荐
相关产品推荐

