【发布时间】:2013-10-14 19:59:28
【问题描述】:
当我写这样的动态 sql 时?
set @dynamicSQL='select '+@logName+'= name from '+@databaseName+'.sys.sysfiles where groupid=0'
它不能工作,但是当我这样写时:
select @logName=name from sys.sysfiles where groupid=0;
它可以正常工作,像这样:
set @dynamicSQL='select name from '+@databaseName+'.sys.sysfiles where groupid=0'
它可以正常工作。但是为什么呢?如果有人告诉我,我会接受的。
【问题讨论】:
-
你传递给@logName的值是什么
-
当一个语句执行时,它在它自己的shell中执行,它与你的脚本运行所在的shell是分开的;这些 shell 之间不可能进行通信,除非它涉及存储在表中的数据(即,一个 shell 将数据写入表中,然后在另一个 shell 中检索):您的第一个查询试图从子 shell 中检索信息,但是这是不可能的,因为无法取回该子 shell 的输出。这有帮助吗?
-
对于简单地从动态查询中检索变量,这个线程可能会有所帮助:stackoverflow.com/questions/3840730/…
标签: sql sql-server