0

TSQLを使用して、UDFがスカラー値を返すかテーブル値を返すかを判断する方法はありますか?

このクエリの結果を調べましたが、タイプに基づく関数の違いはわかりませんでした。

select * from sysobjects where type = 'FN'

ありがとう。

4

4 に答える 4

2

私はあなたが望むことをしていると思いsp_helpます

sp_help 'dbo.InlineFunction'

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

対..。

sp_help 'dbo.ScalarFunction'

Name            Owner   Type                Created_datetime
ScalarFunction  dbo     scalar  function    2012-11-20 10:23:59.260
于 2012-11-30T14:36:46.323 に答える
2

実際、あなたはほとんどそこにいます:)

スカラー関数はタイプFNinとしてリストsysobjectsされ、テーブル関数はタイプとしてリストされTFます。

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

また

SELECT * from sysobjects WHERE [type] IN ('FN','TF')

両方を返します。

于 2012-11-30T14:42:13.797 に答える
0

に参加してみましたか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_desc列は、SQL_SCALAR_FUNCTIONまたはSQL_TABLE_VALUED_FUNCTION

于 2012-11-30T14:36:06.663 に答える
0

とは別にsysobjects、 UDFをチェックして、それがaまたは。sys.Typesのみを返すかどうかを確認できます。valuetable

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

関数が戻ってくるtableので、そのタイプはTF(テーブル値関数)です。

UDFタイプ

于 2012-11-30T14:40:17.210 に答える