如何在SQL Server 2014的新函数中调用函数
问题描述:
我创建了一个名为PV
的函数,它以最低的代价显示我v_id
。现在我想调用该函数,并希望SQL本v_id
显示如何在SQL Server 2014的新函数中调用函数
p_name, p_description, QH associated
。我的问题是我该怎么做?
我的桌子下面,我的功能代码一起:
- Tb1中:P(P_ID(PK),p_name CHAR(60),p_description VARCHAR(300),QH(INT)
- Tb2的: VP(vp_id(PK),成本,P_ID(FK),v_id(FK))
- TB3:V(v_id(PK),v_name)
代码:
CREATE FUNCTION PV (@ptid AS INT)
RETURNS INT
AS
BEGIN
DECLARE @vid AS INT
DECLARE @min AS INT
SELECT
ptid = VP.P_ID, @vid = VP.V_ID,
@min = MIN(VP.COST)
FROM
VPr
GROUP BY
VP.P_ID, VP.V_ID
HAVING
MIN(VP.COST) < 25
RETURN @vid
END;
GO
注意:如果我执行此功能,以及我的ptid输入为9,它将返回正确的v_id
。重申:我想与p_name,p_description和qh一起调用这个函数我是SQL函数的新手。请给我一个解释。
在此先感谢!
答
这是否你在寻找什么:
SELECT
p_name
, p_description
, qh
, v_id
FROM
(
SELECT
P.p_name
, P.p_description
, P.qh
, vp.v_id
, ROW_NUMBER() OVER (ORDER BY vp.cost) R
FROM
P
JOIN vp ON P.p_id = vp.p_id
WHERE vp.v_id = dbo.PV(9) -- you may need to alter the schema from 'dbo'
) Q
WHERE R = 1
可以请你详细说明“你可能需要改变从‘DBO’模式” – biggboss2019
如果函数存储在不同的模式,例如, ,而不是'DatabaseName.dbo.PV',它可能是'DatabaseName.Functionality.PV',或类似的东西,在这种情况下,你会指定'Functionality.PV'。 –
谢谢!我已经尝试了上面的代码。但不是显示一个v_id结果,而是显示两个v_id结果。我有两个不同的p_name中有一个v_id INSERTED。有关如何解决这个问题的任何建议? – biggboss2019