You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake SQL存储过程城市参数校验失效问题求助

Snowflake存储过程城市参数校验失效问题修复

你当前的校验逻辑存在两个常见漏洞,导致无法正常拦截无效输入,以下是具体的修复方案:

问题分析

  1. 空值未处理:如果传入NULL作为city_name参数,city_name NOT IN (...)的结果为UNKNOWN,IF条件不会触发,无效输入会直接绕过校验。
  2. 大小写敏感问题:Snowflake字符串默认大小写敏感,若传入syd、Syd这类混合/小写的城市代码,会被判定为无效,但多数场景下需要兼容大小写不一致的输入。

修复后的代码

CREATE OR REPLACE PROCEDURE CITY_INFO(city_name VARCHAR)
RETURNS STRING
LANGUAGE SQL
AS
BEGIN
    -- 校验空值 + 统一大小写后校验城市代码
    IF city_name IS NULL OR UPPER(city_name) NOT IN ('SYD', 'LDN', 'NYC', 'BER') THEN
        RETURN 'Invalid CITY NAME.';
    END IF;

    -- 后续业务代码...

END;

关键优化点

  • 新增city_name IS NULL判断:直接拦截空值输入,避免NULL绕过校验逻辑
  • 使用UPPER()统一转换:将输入参数转为大写后匹配,兼容大小写不一致的输入场景。如果需要严格区分大小写,去掉UPPER()即可
  • 保留原有的NOT IN逻辑,确保仅允许指定的四个城市代码通过校验

测试用例验证

  • 有效输入:CALL CITY_INFO('SYD')、CALL CITY_INFO('syd')(启用UPPER时)→ 正常执行后续代码
  • 无效输入:CALL CITY_INFO('PAR')、CALL CITY_INFO(NULL) → 返回Invalid CITY NAME.

内容的提问来源于stack exchange,提问作者Rhombus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:02:45