首页 > 解决方案 > SQL INFORMATION_SCHEMA.VIEWS

问题描述

我想让 2020 年包含所有视图内容的 2019 年,但我对长视图有疑问。视图定义列是否有字符限制?因为据我所知,代码太长的视图存在问题。有补救措施吗?

declare @Icerik varchar(max)
declare pcursor cursor
for
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME like '%2019%'
open pcursor
fetch next from pcursor into @Icerik
    while @@FETCH_STATUS = 0
        begin
            set @Icerik = replace(@Icerik,'2019','2020')
            exec (@Icerik)
            fetch next from pcursor into @Icerik
        end
    close pcursor
    deallocate pcursor

标签: sql-servertsqlviewinformation-schema

解决方案


视图定义列是否有字符限制?

来自INFORMATION_SCHEMA.VIEWS

VIEW_DEFINITION nvarchar(4000) 如果定义的长度大于 nvarchar(4000),则此列为 NULL。否则,此列是视图定义文本。


我建议使用sys.sql_modules

definition nvarchar(max) 定义此模块的 SQL 文本。该值也可以使用 OBJECT_DEFINITION 内置函数获得。

db<>小提琴

或者SELECT OBJECT_DEFINITION(OBJECT_ID('schema.view_name'))


推荐阅读