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溢出。。。。。