Sql-Server

試圖編寫一個不需要 dbo 的函式。字首

  • September 29, 2017

我正在嘗試編寫一個簡單的系統函式,以便dbo.訪問該函式不需要前綴。我為 SQL Server 2000 找到了一個範例,但是當我執行時

EXEC SP_CONFIGURE 'ALLOW UPDATES', 1
RECONFIGURE WITH OVERRIDE
go

create function system_function_schema.trim
   (@input varchar(max))
   returns  varchar(max)
as
begin
   declare @result varchar(max)

   select  @result = rtrim(ltrim(@input))

   return  @result
end
go

EXEC SP_CONFIGURE 'ALLOW UPDATES', 0
RECONFIGURE WITH OVERRIDE

這是拋出的錯誤。

指定的模式名稱“system_function_schema”要麼不存在,要麼您沒有使用它的權限。嚴重性 16

預期的用法是

select trim('   padded value   ')

有誰知道我應該採用的方法,或者我是否必須將其創建為必須使用dbo.類似呼叫的正常使用者定義函式:

select dbo.trim('   padded value   ')

在 SQL 2000 中使用 system_function_schema 是一個未記錄且不受支持的過程。從 SQL 2005 開始,它不再可能。

根據設計,UDF 要求在函式呼叫中包含模式。

有一個例外:像過程一樣呼叫函式實際上並不需要模式,但也不會對您的函式非常有用。

exec trim @input = ' foo '

此外,一定要仔細測試帶有標量函式的查詢——它們會對性能產生重大影響。

引用自:https://dba.stackexchange.com/questions/41356