sql-server - 使用 EXECUTE 从 SQL Server 调用用户定义函数时的不同标量结果
问题描述
通常,在使用 UDF 时,我坚持通过调用它们,SELECT
但最近需要使用EXECUTE
,并且在测试时发现很明显有问题。以下是目击行为的示例;
CREATE FUNCTION dbo.[fn_Example]
(
@code AS NVARCHAR(2)
)
RETURNS FLOAT
AS
BEGIN
DECLARE @result FLOAT
IF @code = 'A'
SET @result = 0
ELSE
SET @result = 0.2
RETURN @result
END
使用SELECT
预期结果调用上述UDF时返回;
SELECT dbo.fn_Example('B')
输出:
0.2
但是使用EXECUTE
结果调用时是不正确的;
DECLARE @rtn INT
EXEC @rtn = dbo.[fn_Example] @code = 'B'
SELECT @rtn
输出:
0
已经尝试过WITH RECOMPILE
,但没有区别,就如何通过调用标量 UDF 而言,我从根本上做错了EXECUTE
什么吗?
解决方案
@Larnu 的评论绝对正确。INT
当 UDF 期待 a 时,我将返回值设置为FLOAT
.
应该用过;
DECLARE @rtn FLOAT
EXEC @rtn = dbo.[fn_Example] @code = 'B'
SELECT @rtn
推荐阅读
- bash - 如何将 ```zenity --password``` 输入到变量中?
- javascript - 使用 Typescript 从字符串中获取特定字符
- assembly - 多周期数据路径中固定的 RegWrite 控制信号的影响?
- python - 如何创建距离矩阵
- node.js - 为什么我无法从我的 Swift 代码和我的 node.js 云函数代码中获取我的 Plaid 链接令牌?
- jinja2 - 我最近安装了 superset 1.01 版,但在 SQL Lab 页面上看不到参数按钮。我以管理员角色登录
- ios - AdMob 广告停止展示
- javascript - 获取html表格的rowdata innerHTML输入值
- c - 语义版本控制:更改*应该*通过库函数分配的非透明结构
- excel - Excel - 根据其他 3 列中的条件进行计数