我想在临时表中插入动态记录。我不想申报这张桌子。我希望在运行时定义它的列。我这么做是因为"合同"表的定义将来可能会改变。因此,临时表(#x(应该相应地进行更改。这将在存储过程中。
我尝试了以下方法(这些方法被标记为答案,但都不起作用(
EXECUTE IMMEDIATE
'SELECT top 1 * FROM Contract'
INTO #x
select * from #x
declare @arj varchar(100)
set @arj= 'SELECT top 1 * FROM Contract'
select * into #x from
(SELECT top 1 * FROM Contract)
declare @arj varchar(100)
set @arj= 'SELECT top 1 * FROM Contract'
SELECT * into #x execute ('execute' +
--and this-- SELECT into #T1 execute ('execute ' + @SQLString ) @arj )
SELECT *from #x
您可以使用
SELECT top 1 * INTO #tempTable FROM Contract WHERE <any conditions you might want to filter the data>
select *
INTO #tempTable
from Contract
WHERE 1=0
我使用这个查询来构建一个具有Contract表的所有字段和相同属性的表。希望能有所帮助。
这个语法应该可以工作。
declare @arj varchar(1000)
set @arj= 'SELECT top 1 * FROM Contract'
declare @charIdex int
declare @arg2 varchar(1000)
SELECT @charIdex = CHARINDEX ( 'FROM',
@arj)
SELECT @arg2 = STUFF(@arj, @charIdex, 0 , 'into tempTable ');
exec ( @arg2)
select * from tempTable
此语法应该有效,但您需要动态创建sql,然后执行它:
SELECT top 1 *
INTO #x
FROM Contract
示例:
SELECT TOP 0 * INTO #x from Contract
DECLARE @ARJ NVARCHAR(MAX)
SET @ARJ='INSERT INTO #x SELECT TOP 1 * FROM Contract'
EXECUTE sp_executesql @ARJ