【问题标题】:loading a UDF's statements into a string variable将 UDF 的语句加载到字符串变量中
【发布时间】:2011-08-09 16:46:34
【问题描述】:

我们有一个使用 UDF 的存储过程。我们需要即时修改这些 UDF 的内容。是的,我知道,我知道...不是我的选择。这正是我们要做的:

  1. 读取 UDF 的内容
  2. 修改内容,新建UDF
  3. executesql 语句中使用 UDF

有没有办法将 udf 的内容转换为 varchar(或 nvarchar),然后我可以使用字符串函数对其进行修改?

【问题讨论】:

  • 不要摩擦它,但这听起来很痛苦
  • SELECT definition FROM sys.sql_modules where object_id=object_id('foo.bar')。尽管有很多原因,这听起来是一个可怕的想法。我能问一下你为什么有这个要求吗?
  • 呃!我感觉到你的痛苦。确保使用竞争条件测试最终解决方案,在完成第一个过程之前,您需要知道其他一些过程不会神秘地更改您的 UDF。像@Martin 一样,我很想知道为什么这是要求。

标签: sql-server tsql sql-server-2008 user-defined-functions


【解决方案1】:
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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2018-07-06
    相关资源
    最近更新 更多