【发布时间】:2015-04-22 05:16:43
【问题描述】:
这可能是一个愚蠢的问题,但我是动态 sql 及其局限性的新手(做和不做,我正在阅读动态 SQL 的祝福和诅咒)。
但是我正在尝试将脚本之类的模板转换为动态 sql。我很好地完成了它,直到我被这个特定问题难住了。
我脚本的这一特定部分超过 500 行,其中 1/4 左右是列,并为某些列重命名;该长度的其他部分是子查询的许多其他左外连接。
我知道我可以将变量设置为 nvarchar(max),但是是尝试容纳这么多文本更好,还是将其划分为大型变量并将它们连接在一起并尝试执行 enter concat会查询吗?
谢天谢地,这个大型查询的结果进入了一个可以在动态会话之外引用的表(如果我说得对的话)。有什么想法吗?
对于内存重用,最好在完成工作后将该变量设置为 null 吗?
感谢您对问题长度的任何想法和道歉。
【问题讨论】:
-
好吧,如果你对节省内存非常感兴趣,除非你需要,否则不要使用 NVARCHAR。加上 VARCHAR 可以容纳 8000 个字符(是 NVARCHAR 的两倍)。实际上,每个变量的最大大小只有 8KB,现在非常小,所以我认为您不必担心存储脚本的内存使用情况。
-
@Stephan 感谢您提供此信息。我最初使用 nvarchar 从更早的小得多的查询中获取输出,该查询被用作另一个查询的输入。谢谢。
标签: sql-server tsql dynamic-sql