我有一个表a
,其中包含一个id列表,以及一个用户定义的函数foo(id)
,它接受id并返回VARCHAR(20)
。
我想做的是:
SELECT
id,
foo(id) AS 'text field'
FROM a
然而,不是像我想要的那样为每个ID号调用函数,而是每行都返回相同的文本。我已经使用返回的ID手动测试了foo()函数,并且它没有那个问题,所以我意识到我不能理解查询的评估。
答案 0 :(得分:1)
这对我有用。我不确定你说的是什么。
CREATE TABLE [dbo].[a](
[id] [int] NULL
)
insert into a select 1
insert into a select 2
insert into a select 4
insert into a select 5
CREATE FUNCTION foo(@id int) RETURNS varchar(20)
AS
BEGIN
DECLARE @ResultVar varchar(20)
SELECT @ResultVar = '# - ' + CAST(@id as varchar(20))
RETURN @ResultVar
END
select id, dbo.foo(id) AS 'text field' from a
返回
id text field
----------- --------------------
1 # - 1
2 # - 2
4 # - 4
5 # - 5
6 # - 6
答案 1 :(得分:1)
如果函数的输出在功能上依赖于输入,那么将按照您的预期为每一行调用它。如果您看到不同的结果,则表示您没有传递正确的输入,或者您的功能输出不依赖于其输入。