我想使用 SQL Server 2008 创建一个 UDF,为我提供对象的创建日期。这是代码:
create function dbo.GetObjCreateDate(@objName sysname) returns datetime as
begin
declare @result datetime
select @result = create_date from sys.objects where name = @objname
return @result
end
go
我想把这个 UDF 放在 master 数据库或其他一些共享数据库中,这样它就可以从任何地方访问,除非我这样做,然后 sys.objects
引用从master
数据库,而不是我从中启动查询的数据库。我知道你可以做到这一点,因为 information_schema
View 位于 master
中,只是包装对 sys.objects 的本地实例的调用,所以我希望有一种简单的方法可以做到我的 UDF 也是如此。
最佳答案
试试这个:
CREATE FUNCTION dbo.GetObjCreateDate(@objName sysname, @dbName sysname)
RETURNS datetime AS
BEGIN
DECLARE @createDate datetime;
DECLARE @params nvarchar(50);
DECLARE @sql nvarchar(500);
SET @params = '@createDate datetime OUTPUT';
SELECT @sql = 'SELECT @createDate = create_date FROM ' + @dbName + '.sys.objects WHERE name = ''' + @objname + '''';
EXEC sp_executesql @sql, @params, @createDate = @createDate OUTPUT;
RETURN @createDate
END
;
关于sql-server - 如何在另一个数据库中创建引用调用者中正确的 sys.objects 表的 UDF 或 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4035024/