請教各位高手,存储过程中一语法错误,100分,不够再加

parss 2008-06-05 10:26:51



--更新各工区考勤记录
set @sql=('select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')

--print @sql

set @maxid=exec(@sql)

if @maxid<('SELECT max(attendanceid)FROM OPENDATASOURCE(''SQLOLEDB'',
''Data Source=192.168.12.6;Uid=program;pwd=program'').alphasystem.dbo.salattendance where workno in (select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
begin
exec('insert into salattendance select * from opendatasource(''SQLOLEDB'',''Data Source=192.168.12.6;
uid=program;pwd=program'').alphasystem.dbo.salattendance
where attendanceid>'+@maxid +' and workno in (select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
print '考勤记录更新完毕'
end


这是一个跨服务器更新考考勤记录的存储过程中的一部份。
set @maxid=exec(@sql)
这一句要怎么写?提示语法错误。
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
parss 2008-06-05
  • 打赏
  • 举报
回复
非常感谢各位,用临时表这个方法不错,我怎么就没有想到呢。。。。
nzperfect 2008-06-05
  • 打赏
  • 举报
回复
--更新各工区考勤记录  
set @sql=('select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')

--print @sql
create table #(attendanceid int)
insert into # exec(@sql)
select @maxid=attendanceid from #
drop table #

create table #2(attendanceid int)
insert into #2 exec('SELECT max(attendanceid)FROM OPENDATASOURCE(''SQLOLEDB'',
''Data Source=192.168.12.6;Uid=program;pwd=program'').alphasystem.dbo.salattendance where workno in (select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')


if @maxid<(select max(attendanceid) from #2)
begin
exec('insert into salattendance select * from opendatasource(''SQLOLEDB'',''Data Source=192.168.12.6;
uid=program;pwd=program'').alphasystem.dbo.salattendance
where attendanceid>'+@maxid +' and workno in (select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
print '考勤记录更新完毕'
end
drop table #2
utpcb 2008-06-05
  • 打赏
  • 举报
回复
create table #(attendanceid int)
insert into # exec(@sql)
select @maxid=attendanceid from #
zhou968 2008-06-05
  • 打赏
  • 举报
回复
set @sql=('select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
中的salemployee是另外一个表吧,两个表用“,”阁开
Limpire 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhou968 的回复:]

set @sql=('select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
括号去掉

set @sql='select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')'

[/Quote]

与这个括号无关,可以这么写。
Limpire 2008-06-05
  • 打赏
  • 举报
回复
看看 @serverNQ 传的是什么值?它的后面是否要个空格?


nzperfect 2008-06-05
  • 打赏
  • 举报
回复
可以这样取:

create table #(attendanceid int)
insert into # exec(@sql)
select @maxid=attendanceid from #
zhou968 2008-06-05
  • 打赏
  • 举报
回复

set @sql=('select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')')
括号去掉

set @sql='select max(attendanceid) from salattendance(nolock) where workno in(select workno
from '+@serverNQ+'salemployee where deptid='+@Dept+')'
中国风 2008-06-05
  • 打赏
  • 举报
回复
用一個變量和字符串加起來

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧