开发者社区 问答 正文

SET FMTONLY ON的问题

我正在使用SET FMTONLY ON执行存储过程,以模拟我们的代码生成器所做的事情。但是,似乎像这样执行时会缓存结果,因为我仍然从刚刚删除的proc中收到转换失败错误!即使我在没有设置FMTONLY ON的情况下执行proc时,也会发生这种情况。

谁能告诉我这是怎么回事?

展开
收起
心有灵_夕 2019-12-28 22:53:46 931 分享 版权
1 条回答
写回答
取消 提交回答
  • 即使使用,某些语句仍将执行SET FMTONLY ON。您的“转换失败”错误可能来自set variable存储过程中的一条语句。例如,这返回第一个查询的元数据,但是在运行最后一条语句时抛出异常:

    SET FMTONLY on
    
    select 1 as a
    
    declare @a int
    set @a = 'a'
    
    

    至于运行删除的过程,这对我来说是一个新的过程。SQL Server使用系统表来确定要执行的对象,因此,是否为该对象缓存了执行计划都没有关系。如果删除它,将从系统表中删除它,并且永远不要执行它。您可以在执行该过程之前查询sysobjects(或sys.objects)吗?我希望您会发现您尚未删除它。

    2019-12-28 22:54:05
    赞同 展开评论
问答分类:
问答地址: