【发布时间】:2013-01-12 03:50:10
【问题描述】:
在 SQL Server 2008 中,我有一个包含 CTE 的存储过程
;with t1 as (select * from db..tablename where …)
Select * from t1;
我想使用tablename 作为存储过程参数之一。
请注意T1 的大小太大而无法使用类似的东西
Exec(‘select * into #temptable from db..’+’tablename’+’ where …’)
有类似的问题和答案,但似乎都没有帮助。
谢谢
【问题讨论】:
-
你能详细解释一下吗? “请注意 T1 的大小太大,无法使用类似 Exec('select * into #temptable from db..'+'tablename'+' where ...')”之类的东西”
-
为什么他们似乎没有帮助?将表名作为参数传入。检查它是否作为表名,最好是应该使用的表名,然后使用表名而不是参数构建一些sql并执行它。这很痛苦,因为你应该非常努力地不要这样做......
-
第一个子查询 T1 的数据集非常大。如果不是这种情况,那么我会将 t1 的输出发送到临时表中。
-
有人对这个问题投了反对票,觉得不需要解释。它只是告诉我他/她是什么人。
标签: sql-server-2008 tsql stored-procedures common-table-expression