mar*_*c_s 101 sql sql-server sql-server-2005 stored-functions
SQL Server 2005在我经常使用的系统目录上有很棒的sys.XXX视图.
让我失望的是:为什么有一个"sys.procedures"视图来查看有关存储过程的信息,但是没有"sys.functions"视图来查看存储函数的相同信息?
没有人使用存储的功能吗?我发现它们对于例如计算列等非常方便!
是否有一个特定的原因缺少sys.functions,或者它只是被认为不足以放入sys目录视图的东西?它在SQL Server 2008中可用吗?
干杯,马克
Luk*_*keH 112
我发现UDF非常方便,我一直都在使用它们.
我不确定微软的理由是什么不包括SQL Server 2005(或SQL Server 2008中的sys.functions等价物,据我所知),但它很容易推出自己的:
CREATE VIEW my_sys_functions_equivalent
AS
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF')  -- scalar, inline table-valued, table-valued
Tim*_*m C 37
列出函数的另一种方法是使用INFORMATION_SCHEMA视图.
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION'
根据Microsoft网站"信息架构视图提供SQL Server元数据的内部系统表独立视图.信息架构视图使应用程序能够正常工作,尽管已对基础系统表进行了重大更改".换句话说,底层的System表可能会随着SQL升级而改变,但视图仍应保持不变.
Orl*_*teo 18
根据SSMS在编写函数的DROP脚本时生成的内容,这在2008 R2中有效:
SELECT  *
FROM    sys.objects
WHERE   type IN (N'FN', N'IF', N'TF', N'FS', N'FT') ;
/*
From http://msdn.microsoft.com/en-us/library/ms177596.aspx:
 FN SQL_SCALAR_FUNCTION
 FS Assembly (CLR) scalar-function
 FT Assembly (CLR) table-valued function
 IF SQL_INLINE_TABLE_VALUED_FUNCTION
 TF SQL_TABLE_VALUED_FUNCTION
*/
小智 5
它略显冗长,但这应该完全相同:
select * from sys.objects where (type='TF' or type='FN')
据我所知,它也不在SQL Server 2008中.
| 归档时间: | 
 | 
| 查看次数: | 73335 次 | 
| 最近记录: |