zoukankan      html  css  js  c++  java
  • Cannot perform alter on 'dbo.ObjectName' because it is an incompatible object type

      Today, when I tried to Alter a function in my database, I got the error info in the title. Then I tried some example function operations, and found the reason: Inline table-value function and Multi-Statement table-valued function are actually different object type, and you can never do Alter one object to other types(If I am wrong here, please tell me).
    Now you could try it yourself:
    --First, we create a inline-table function which returns a table
    Create Function dbo.yukunFunctionTest (@param int@param1 int)
    returns table
    AS
    RETURN
    (
        
    select 1 as id
    )

    --Then, we want to alter it to a multi-statement table-valued function,
    --
    and we will get an error here
    alter Function dbo.yukunFunctionTest (@param int@param1 int)
    returns @tt table
    (
        id 
    int

    begin
        
    insert into @tt values (1)
        
    return
    end

      By the way, you can get the type value and type desc of any objects in your database from table sys.objects.
      And, which is very important, if  you really want to "alter" the type of your function, actually you need to drop it first, then create a new one. When you do it, pay attention to the permissions to the dropped objects, because you will lose all the permission info when you drop it, and you need to restore them after you create the new one.Bellow is a demo scripts which could do this for you:

    select @grantee varchar(200)

    select @grantee=name
    from syspermissions p
    join sysusers u on p.grantee = u.uid
    where id = object_id('ObjectName')

    grant select on dbo.ObjectName to @grantee
  • 相关阅读:
    Selenium+Java自动化之如何优雅绕过验证码
    Java替换中使用正则表达式实现中间模糊匹配
    【转】Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍
    【转】安全测试===如何查看浏览器保存的密码
    JMeter 中_time 函数的使用(时间戳、当前时间)
    TCP拆包粘包之分隔符解码器
    TCP粘包/拆包问题
    Netty 入门示例
    JDK AIO编程
    JDK NIO编程
  • 原文地址:https://www.cnblogs.com/xingyukun/p/1203711.html
Copyright © 2011-2022 走看看