TSQL:如何判断UDF的类型?
使用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
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'。检查其他答案!