创建返回超大Int的T-SQL函数遇异常:编写的代码无法正常运行
问题分析与解决
你的T-SQL函数无法运行的核心原因是RETURN语句错误地用SELECT子查询包裹了计算表达式,标量值函数的RETURN需要直接返回计算结果,不能嵌套SELECT子查询。
另外,你的需求是返回接近int类型上限的“超大Int”值(范围2000000000~2147483647),修正后的代码如下:
CREATE FUNCTION fn_RandomHugeInt() RETURNS int AS BEGIN -- 直接返回表达式,去掉多余的SELECT子查询 RETURN ABS(CHECKSUM(NEWID()) % 147483648) + 2000000000 END
说明:
- 把原代码中
2147483647 - 2000000000 + 1直接计算为147483648,简化逻辑,避免运行时重复计算 CHECKSUM(NEWID())生成随机int值,取模后得到0~147483647范围内的数,加上2000000000后正好落在目标区间- 测试时执行
SELECT fn_RandomHugeInt()即可获取随机值
内容的提问来源于stack exchange,提问作者k507
相关产品推荐
相关产品推荐

