SQL - 功能 - 一次使用一列 return table
SQL - function - use one column at a time which return table
我有一个 SQL 服务器功能:
ALTER FUNCTION [dbo].[Element_DryScrapManualSurface]
(
@Start_date datetime,
@End_date datetime,
@codeusine varchar(10),
@codeatelier varchar(10),
@ligne varchar(10),
@Trialcheck bit
)
RETURNS @Result TABLE (Element_DryScrapManualSurface float,
Element_DryScrapManualBoards float)
AS
BEGIN
insert into @Result
select * from table_x
select * from @Result
END
现在在使用这个函数时,有时我只想使用这个函数的单个列,例如在存储过程中。
如果我使用此代码 - 它将 return 整个 table
declare @para float
set @para = isnull((select dbo.[Element_DryScrapManualSurface](@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
如何只获取Element_DryScrapManualSurface
列?
试试这个:
set @para = isnull((select top 1 Element_DryScrapManualBoards FROM dbo.[Element_DryScrapManualSurface](@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
试试这个:
with cte1 as (
select dbo.[Element_DryScrapManualSurface](@Start_date
,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
)
select @para = *yourfieldname*
from cte1
如果需要,您可能还想使用 TOP 1。
你叫错了,因为你有一个 table 值函数,它应该是:
SELECT Element_DryScrapManualSurface,
Element_DryScrapManualBoards
FROM dbo.Element_DryScrapManualSurface (@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck);
然后你可以从中分配一个变量:
SELECT TOP 1 @para = Element_DryScrapManualSurface
FROM dbo.Element_DryScrapManualSurface (@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)
ORDER BY Element_DryScrapManualSurface;
我不知道你的函数 return 是否有多个结果,但我添加了 TOP 1
和 ORDER BY
以确保赋值是确定的,以防它 return 多行。
我有一个 SQL 服务器功能:
ALTER FUNCTION [dbo].[Element_DryScrapManualSurface]
(
@Start_date datetime,
@End_date datetime,
@codeusine varchar(10),
@codeatelier varchar(10),
@ligne varchar(10),
@Trialcheck bit
)
RETURNS @Result TABLE (Element_DryScrapManualSurface float,
Element_DryScrapManualBoards float)
AS
BEGIN
insert into @Result
select * from table_x
select * from @Result
END
现在在使用这个函数时,有时我只想使用这个函数的单个列,例如在存储过程中。
如果我使用此代码 - 它将 return 整个 table
declare @para float
set @para = isnull((select dbo.[Element_DryScrapManualSurface](@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
如何只获取Element_DryScrapManualSurface
列?
试试这个:
set @para = isnull((select top 1 Element_DryScrapManualBoards FROM dbo.[Element_DryScrapManualSurface](@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
试试这个:
with cte1 as (
select dbo.[Element_DryScrapManualSurface](@Start_date
,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)),0)
)
select @para = *yourfieldname*
from cte1
如果需要,您可能还想使用 TOP 1。
你叫错了,因为你有一个 table 值函数,它应该是:
SELECT Element_DryScrapManualSurface,
Element_DryScrapManualBoards
FROM dbo.Element_DryScrapManualSurface (@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck);
然后你可以从中分配一个变量:
SELECT TOP 1 @para = Element_DryScrapManualSurface
FROM dbo.Element_DryScrapManualSurface (@Start_date,@End_date,@codeusine,@codeatelier,@ligne,@Trialcheck)
ORDER BY Element_DryScrapManualSurface;
我不知道你的函数 return 是否有多个结果,但我添加了 TOP 1
和 ORDER BY
以确保赋值是确定的,以防它 return 多行。