2011-04-20 62 views
2

我們有一個使用UDF的存儲過程。我們需要即時修改這些UDF的內容。是的,我知道,我知道...不是我的選擇。這正是我們所綁的事情:將UDF的語句加載到字符串變量中

  1. 閱讀的UDF
  2. 內容修改的內容,並創建一個新的UDF
  3. 使用UDF在executesql聲明

是有一種方法可以將udf的內容轉換爲varchar(或nvarchar),然後使用字符串函數進行修改?

+2

不要揉它,但這只是聽起來FROM sys.sql_modules其中OBJECT_ID = OBJECT_ID痛苦 – LittleBobbyTables 2011-04-20 17:18:07

+1

'選擇的定義( 'foo.bar')'。這聽起來很可怕,但有很多原因。我可以問爲什麼你有這個要求? – 2011-04-20 17:19:37

+0

呃!我感到你的痛苦。確保你使用競賽條件測試你的最終解決方案,你需要知道一些其他的過程不會在完成第一個過程之前神祕地改變你的UDF。像@馬丁,我很想知道爲什麼這是要求。 – HLGEM 2011-04-22 17:26:27

回答

3
select object_definition(object_id('UDFName')) 

有沒有辦法讓一個 UDF內容爲VARCHAR(或nvarchar) ,我可以再修改使用字符串 的功能呢?

declare @str nvarchar(max) 

-- get function definition to @str 
select @str = object_definition(object_id('UDFName')) 

-- Modify definition 
set @str = replace(@str, 'CREATE FUNCTION', 'ALTER FUNCTION') 

-- execute alter function 
exec (@str) 
相關問題