我有一张table x
其中有列 y
以及 z
它有10行数据。
然后我有一个表值函数 getDetails(y,z)
它接受表中存储的值 x
在列中 y
以及 z
归还table tb
有三列。
我需要编写一个tsql查询来循环表中的值 x
通过函数 getDetails(y,z)
为每组值返回一行 y
以及 z
从表 x
在本例中为表 tb
应该有10行。
这是我到目前为止只返回一行,每次我运行它。
DECLARE @y NVARCHAR(50);
DECLARE @z NVARCHAR(2);
SELECT @y =y FROM x
SElECT @z =z FROM x
SELECT * from getDetails(@y,@z)
这是回报
col1 col2 col3
---------------------
row1 Lorem Ipsum Sit
//更新如果有人有一个想法,我可以使用临时表来实现这一点,请让我知道
2条答案
按热度按时间wmvff8tz1#
您正在尝试为表x的每一行调用用户定义的函数。你不需要循环,你可以自己进行基于集合的操作。
下面我创建一个表用户定义函数,它返回一个有3列的表。
我将两行加载到表变量中,然后为每行调用用户定义的函数。
h4cxqtbf2#
如果你愿意一次得到所有的结果,我会用
CROSS APPLY
在这里。这将一次返回完整的数据集。你也可以加上
x.y
以及x.z
到SELECT
子句,如果您需要/希望在结果中包含这些值。