关于一个update的sql,那位大哥帮忙解决一下

jaydom 2010-05-05 03:49:04
create procedure [dbo].[UpdateVisit_type]

@startdate datetime
as
begin
declare @SQL1 VARCHAR(MAX);
SET
@SQL1='update visits set '+cast(visit_type as varchar(10))+'='11' where '+convert(varchar(10),START_TIME,121)+'>=@date_start and '+cast(visit_type as varchar(10))+'='10' and LONGITUDE<>0'
EXECUTE(@SQL1);
end

执行时报 消息 102,级别 15,状态 1,过程 UpdateVisit_type,第 10 行
'11' 附近有语法错误。
...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaydom 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 winstonbonaparte 的回复:]
SQL code

@SQL1='update visits set '+cast(visit_type as varchar(10))+'=''11'' where '+convert(varchar(10),START_TIME,121)+
'>=@date_start and '+cast(visit_type as varchar(10))+'=''10'' and LONGITUD……
[/Quote]
提示消息 207,级别 16,状态 1,过程 UpdateVisit_Type,第 9 行
列名 'visit_type' 无效。
消息 207,级别 16,状态 1,过程 UpdateVisit_Type,第 9 行
列名 'START_TIME' 无效。
消息 207,级别 16,状态 1,过程 UpdateVisit_Type,第 10 行
列名 'visit_type' 无效。
winstonbonaparte 2010-05-05
  • 打赏
  • 举报
回复

@SQL1='update visits set '+cast(visit_type as varchar(10))+'=''11'' where '+convert(varchar(10),START_TIME,121)+
'>=@date_start and '+cast(visit_type as varchar(10))+'=''10'' and LONGITUDE<>0'

這樣試下
jaydom 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 htl258 的回复:]
引用 5 楼 jaydom 的回复:
还是没有解决,我也怀疑是参数类型的问题不过,改来改去还是不对,visit_type是varchar类型的

其实没有传递表名和字段名不需要拼串的。你写一条常规的UPDATE,然后把参数换为变量即可。
[/Quote]
可不可以把语句写出来,小弟刚刚接触这个,谢谢
htl258_Tony 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jaydom 的回复:]
还是没有解决,我也怀疑是参数类型的问题不过,改来改去还是不对,visit_type是varchar类型的
[/Quote]
其实没有传递表名和字段名不需要拼串的。你写一条常规的UPDATE,然后把参数换为变量即可。
subxli 2010-05-05
  • 打赏
  • 举报
回复
捕捉到SQL的语法,再之后就容易了,应该是语法错误.
jaydom 2010-05-05
  • 打赏
  • 举报
回复
还是没有解决,我也怀疑是参数类型的问题不过,改来改去还是不对,visit_type是varchar类型的
htl258_Tony 2010-05-05
  • 打赏
  • 举报
回复
create procedure [dbo].[UpdateVisit_type]

@startdate datetime
as
begin
declare @SQL1 VARCHAR(MAX);
SET
@SQL1='update visits set ['+cast(visit_type as varchar(10))+']=''11'' where '''+convert(varchar(10),START_TIME,121)+'''>='''+convert(varchar(10),@startdate,121)+''' and cast(visit_type as varchar(10))=''10'' and LONGITUDE<>0'
EXECUTE(@SQL1);
end
--小F-- 2010-05-05
  • 打赏
  • 举报
回复
11是数字还是字符串?/如果是字符串的话还需要加''号来转义
喜-喜 2010-05-05
  • 打赏
  • 举报
回复
把'11'改为''11''、'10'改为''10''

问一下!里面有个 @date_start ,没有见到声明耶...
喜-喜 2010-05-05
  • 打赏
  • 举报
回复
print @SQL1

看看结果

22,210

社区成员

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

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