TSQLを使用して、UDFがスカラー値を返すかテーブル値を返すかを判断する方法はありますか?
このクエリの結果を調べましたが、タイプに基づく関数の違いはわかりませんでした。
select * from sysobjects where type = 'FN'
ありがとう。
TSQLを使用して、UDFがスカラー値を返すかテーブル値を返すかを判断する方法はありますか?
このクエリの結果を調べましたが、タイプに基づく関数の違いはわかりませんでした。
select * from sysobjects where type = 'FN'
ありがとう。
私はあなたが望むことをしていると思い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
実際、あなたはほとんどそこにいます:)
スカラー関数はタイプFN
inとしてリストsysobjects
され、テーブル関数はタイプとしてリストされTF
ます。
SELECT * from sysobjects WHERE Xtype IN ('FN','TF')
また
SELECT * from sysobjects WHERE [type] IN ('FN','TF')
両方を返します。
に参加してみましたか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
とは別にsysobjects
、 UDFをチェックして、それがaまたは。sys.Types
のみを返すかどうかを確認できます。value
table
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
(テーブル値関数)です。