TSQL:如何判断UDF的类型?

TSQL:如何判断UDF的类型?,sql,sql-server,tsql,Sql,Sql Server,Tsql,使用TSQL有没有办法确定UDF是返回标量值还是表值 我检查了此查询的结果,但在基于类型的函数中看不到任何差异: select * from sysobjects where type = 'FN' 谢谢。您是否尝试加入sys.parameters select * FROM sys.objects AS SO INNER JOIN sys.parameters AS P ON SO.OBJECT_ID = P.OBJECT_ID where type = 'FN' type\u desc

使用TSQL有没有办法确定UDF是返回标量值还是表值

我检查了此查询的结果,但在基于类型的函数中看不到任何差异:

select * from sysobjects where type = 'FN'

谢谢。

您是否尝试加入
sys.parameters

select * FROM sys.objects AS SO
INNER JOIN sys.parameters AS P 
ON SO.OBJECT_ID = P.OBJECT_ID where type = 'FN'

type\u desc
列应该是
SQL\u SCALAR\u FUNCTION
SQL\u TABLE\u VALUED\u FUNCTION
您是否尝试加入
sys.parameters

select * FROM sys.objects AS SO
INNER JOIN sys.parameters AS P 
ON SO.OBJECT_ID = P.OBJECT_ID where type = 'FN'

type\u desc
列应该是
SQL\u SCALAR\u FUNCTION
SQL\u TABLE\u VALUED\u FUNCTION
我认为
sp\u help
可以满足您的需要

sp\u帮助“dbo.InlineFunction”

Name            Owner   Type                Created_datetime
InlineFunction  dbo     inline function     2012-11-20 10:23:59.260
Name            Owner   Type                Created_datetime
ScalarFunction  dbo     scalar  function    2012-11-20 10:23:59.260

sp\u帮助“dbo.ScalarFunction”

Name            Owner   Type                Created_datetime
InlineFunction  dbo     inline function     2012-11-20 10:23:59.260
Name            Owner   Type                Created_datetime
ScalarFunction  dbo     scalar  function    2012-11-20 10:23:59.260

我认为,
sp\u help
能满足您的需求

sp\u帮助“dbo.InlineFunction”

Name            Owner   Type                Created_datetime
InlineFunction  dbo     inline function     2012-11-20 10:23:59.260
Name            Owner   Type                Created_datetime
ScalarFunction  dbo     scalar  function    2012-11-20 10:23:59.260

sp\u帮助“dbo.ScalarFunction”

Name            Owner   Type                Created_datetime
InlineFunction  dbo     inline function     2012-11-20 10:23:59.260
Name            Owner   Type                Created_datetime
ScalarFunction  dbo     scalar  function    2012-11-20 10:23:59.260

除了
sysobjects
sys.Types
之外,您还可以检查UDF,查看它是否只返回

CREATE FUNCTION getCost(@person VARCHAR(10), @month TINYINT)
RETURNS INT 
AS
BEGIN
--function body here
在上述情况下,它只返回
INT
,因此类型为
FN

CREATE FUNCTION getCost(@person VARCHAR(10), @month TINYINT)
RETURNS TABLE
AS
BEGIN
--function body here
由于函数返回
,因此其类型为
TF
(表值函数)


除了
sysobjects
sys.Types
之外,您可以检查UDF,查看它是否只返回

CREATE FUNCTION getCost(@person VARCHAR(10), @month TINYINT)
RETURNS INT 
AS
BEGIN
--function body here
在上述情况下,它只返回
INT
,因此类型为
FN

CREATE FUNCTION getCost(@person VARCHAR(10), @month TINYINT)
RETURNS TABLE
AS
BEGIN
--function body here
由于函数返回
,因此其类型为
TF
(表值函数)


事实上你就快到了:)

标量函数列为
sysobjects
中的
FN
类型,表函数列为
TF
类型

SELECT * from sysobjects WHERE Xtype IN ('FN','TF')


两者都将返回。

事实上,您就快到了:)

标量函数列为
sysobjects
中的
FN
类型,表函数列为
TF
类型

SELECT * from sysobjects WHERE Xtype IN ('FN','TF')


都将返回。

nifty-但是Paul发布的一个更容易在查询中使用。谢天谢地——但是保罗的帖子更容易在查询中使用。谢谢,这不是100%正确。我得到[Table value Function]的'TF'。检查其他答案!不是100%正确。我得到[Table value Function]的'TF'。检查其他答案!