我正在使用此过程从不同的表中选择值(每个表每周一次)并将它们插入一个临时表中,并通过选择过程结束时的表格将它们作为输出...
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
提前致谢。
答案 0 :(得分:1)
您收到的错误消息是什么?你的问题目前无法回答。
据我所知,这可能是以下潜在问题之一:
转换为数字,然后附加到字符串:
... and b.week_details ='+convert(numeric(18),@tablename);
将动态SQL语句分解为多个部分,并在尝试exec
之前查看它。即print
或select
字符串。你可以复制它并独立运行它以查看是否有任何问题。
修改强>
从下面的评论中,我可以看到您的问题是您正在将字符串转换为数字,然后尝试将其附加到字符串。试试这个:
... and b.week_details ='+ @tablename
答案 1 :(得分:0)
谢谢大家......所有答案和评论......
我清除了我的错误..
我忘了给Dyanmic命令中的where子句数据单引号...
像这样....'''Text'''='文字'....
为什么我收到错误的原因是它接受参数并在程序中执行。 但不适用于所有价值观。我把表名作为输入。
现在正在努力。再次感谢s