简体   繁体   English

在动态查询的临时表中插入数据

[英]Inserting data in temp table in dynamic query

I have this query 我有这个查询

declare @SQL  as NVARCHAR(MAX);

create table #TempCalcPerc
( 
    PctAPAC nvarchar(50),
    PctEMEA nvarchar(50),
    PctLAmerica nvarchar(50),
    PctNAmerica nvarchar(50)
)

set @SQL = 'Insert into 
#TempCalcPerc(PctAPAC,PctEMEA,PctLAmerica,PctNAmerica)
select RTrim(LTrim(Replace([rRecurringMarginPct-Apac],''%'',''))),
RTrim(LTrim(Replace([rRecurringMarginPct-Emea],''%'',''))),
RTrim(LTrim(Replace([rRecurringMarginPct-LatinAmerica],''%'',''))),
RTrim(LTrim(Replace([rRecurringMarginPct-NorthAmerica],''%'','')))
from DashboardData
where DataType = ''SLPayroll'''

exec sp_executeSQL @SQL;

I am basically just trying to insert some data into a temp table after some replace operation. 我基本上只是在尝试一些替换操作之后将一些数据插入到临时表中。

Although I have 4 columns selected in the select query, I get this error: 尽管在选择查询中选择了4列,但出现此错误:

The select list for the INSERT statement contains fewer items than the insert list. INSERT语句的选择列表包含的项目少于插入列表。 The number of SELECT values must match the number of INSERT columns. SELECT值的数量必须与INSERT列的数量匹配。

If I execute the SQL normally without it being dynamic the query runs fine. 如果我在没有动态的情况下正常执行SQL,则查询运行良好。 Can someone please have a look and let me know what I am doing wrong here. 有人可以看看吗,让我知道我在做什么错。

Also if I change the query to be the insert seems to work fine. 另外,如果我将查询更改为插入,似乎工作正常。

set @SQL = 'Insert into 
    #TempCalcPerc(PctAPAC,PctEMEA,PctLAmerica,PctNAmerica)
    select 1,2,3,4'

exec sp_executeSQL @SQL;

Thanks 谢谢

how about : 怎么样 :

Create table #TempCalcPerc
( 
  PctAPAC nvarchar(50),
  PctEMEA nvarchar(50),
  PctLAmerica nvarchar(50),
  PctNAmerica nvarchar(50)
)

declare @SQL  as NVARCHAR(MAX);
SET @SQL = 'Insert into 
#TempCalcPerc(PctAPAC,PctEMEA,PctLAmerica,PctNAmerica)
select RTrim(LTrim(Replace([rRecurringMarginPct-Apac],''%'',''''))),
RTrim(LTrim(Replace([rRecurringMarginPct-Emea],''%'',''''))),
RTrim(LTrim(Replace([rRecurringMarginPct-LatinAmerica],''%'',''''))),
RTrim(LTrim(Replace([rRecurringMarginPct-NorthAmerica],''%'','''')))
from DashboardData
where DataType = ''SLPayroll'''

exec @SQL;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM