Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 使用Insert by Select语句的动态SQL命令出错_Sql Server 2005 - Fatal编程技术网

Sql server 2005 使用Insert by Select语句的动态SQL命令出错

Sql server 2005 使用Insert by Select语句的动态SQL命令出错,sql-server-2005,Sql Server 2005,我正在使用此过程每周从不同的表中选择每个表中的值,并将它们插入一个临时表中,然后通过在过程结束时选择表将其作为输出 CREATE proc salessample (@tablename varchar(50), @did varchar(50)) as begin create table #salesdetail(sno int identity, This_Week_Left float,

我正在使用此过程每周从不同的表中选择每个表中的值,并将它们插入一个临时表中,然后通过在过程结束时选择表将其作为输出

CREATE proc salessample (@tablename varchar(50), @did varchar(50))      
as      
begin      
   create table #salesdetail(sno int identity, This_Week_Left float,
                             This_Week_Right float, Last_Week_Left float, 
                             Last_Week_Right float, Paid_Left float,
                             Paid_Right float, Paid float, orbitrate float)      

DECLARE @SQLString NVARCHAR(500), @i int;
DECLARE @SQLString2 NVARCHAR(500);      

set @i=1      

--while(@i < 2)      
--begin      

set @SQLString = N'insert into #salesdetail(This_Week_Left,This_Week_Right,Last_Week_Left,Last_Week_Right,Paid_Left,Paid_Right,Paid,orbitrate) select a.This_Week_Left,a.This_Week_Right,a.Last_Week_Left,a.Last_Week_Right,a.Paid_Left,a.Paid_Right,a.Paid,b.orbitrate from Power.Week_'+@tablename +'_table a, Power.Orbit_Rates b where a.m_distributor_id ='+@did+' and b.week_details ='+convert(numeric(18),@tablename);      

exec  sp_executesql @SQLString      

set @i =@i + 1      

--end      

select * from #salesdetail      

end 

提前感谢。

您收到的错误消息是什么。你的问题以目前的形式是不可能回答的

据我所知,这可能是以下潜在问题之一:

unicode nvarchar和非unicode varchar之间的转换 转换为数字,然后追加到字符串:

。。。和b.week_details='+convertnumeric18,@tablename

转换为数字18 其他一些我看不到的插入错误 将动态SQL语句分解为多个部分,并在尝试执行它之前查看它。即打印或选择字符串。您可以复制它并独立运行,以查看是否存在任何问题

编辑

从您下面的评论中,我可以看出您的问题是将字符串转换为数字,然后尝试将其附加到字符串中。请尝试以下方法:

... and b.week_details ='+ @tablename

谢谢大家。。。。。。对于所有答案和评论

我的错误被澄清了

我忘了在Dyanmic命令中为where子句数据提供单引号

像这样

“文本”=“文本”

我出错的原因是它接受参数并在过程中执行。 但并非所有价值观都如此。我输入了表名


现在它开始工作了。再次感谢s

您遇到了什么问题?同意上述说法,因此得到-1。当提供更多信息时,很高兴撤销它。当尝试将varchar值转换为int数据类型时,我得到的错误是Arthimetic溢出。。。。。