消息 102,级别 15,状态 1,第 1 行 'fromspwater20101001'附近有语法错误

sd6275832ght 2016-12-07 03:12:42
本人菜鸟一名刚接触SQL 2005 写了个语句
在 use master数据库中
declare @water varchar(20)
set @water='spwater20101001'
exec('select * from' + @water + '.dbo.yh')
想通过变量去访问spwater20101001这个数据库的表 ,运行时提示
消息 102,级别 15,状态 1,第 1 行
'fromspwater20101001' 附近有语法错误。

求教大神这个该怎么解决,语句哪里写的不对啊
...全文
282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd6275832ght 2016-12-08
  • 打赏
  • 举报
回复
感谢大神指导
卖水果的net 2016-12-07
  • 打赏
  • 举报
回复
引用 3 楼 sd6275832ght 的回复:
declare @water varchar(20) set @water='spwater20101001' exec('select * from ' + @water + '.dbo.yh where yshdm='20209018'') 这么写 提示 '20209018' 附近有语法错误。这个该怎么改啊, 语句这么写有什么规程么,规则是什么啊,求上面的大神在指教下
如果,你的拼接SQL时,用到了单引号,要用两个单引号,表示一个单引号; 参考 4# 给你写的范例;
RINK_1 2016-12-07
  • 打赏
  • 举报
回复
exec('select * from ' + @water + '.dbo.yh where yshdm=''20209018''')
sd6275832ght 2016-12-07
  • 打赏
  • 举报
回复
declare @water varchar(20) set @water='spwater20101001' exec('select * from ' + @water + '.dbo.yh where yshdm='20209018'') 这么写 提示 '20209018' 附近有语法错误。这个该怎么改啊, 语句这么写有什么规程么,规则是什么啊,求上面的大神在指教下
sd6275832ght 2016-12-07
  • 打赏
  • 举报
回复
感谢大神,问题已经解决,原来是这么写的
卖水果的net 2016-12-07
  • 打赏
  • 举报
回复
exec('select * from' + @water + '.dbo.yh') from 后面,加一个空格;

22,209

社区成员

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

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