sql server中运行sql代码报错:向变量赋值的 SELECT 语句不能与数据检索操作结合使用

        数据库中有一张temp7表,里面的数据是从文本文件导入的,因此各个字段都是varchar类型,这是其中的几条数据:       我要把“计费终止日期”的年份减一,由于里面有错的数据存在,比如说时间有可能出现"2010-2-29"的现象,在执行“select dateadd(yyyy,-1,计费终止日期) from temp7”的时候会失败,错误信息:从字符串转换为 datetime 时发生语法错误。      由于里面数据有三千多条,不可能手工去一条一条的找,写了一个错误筛选器,想试图找到哪条数据的时间有误,代码如下:declare @error int,@lou varchar(20),@dan varchar(20)  set @error = 0   while(1=1)     begin select @lou=楼阁,@dan=房屋,dateadd(yyyy,-1,计费终止日期) from temp7 set @error=@error+@@error if(@error<>0)   break     end  print @lou+@dan    如果有错的话,通过打印变量来确定是几栋几单元多少号的数据错了,但是我在运行的时候报错,错误如下:向变量赋值的 SELECT 语句不能与数据检索操作结合使用。    请求大家帮助,到底是我的思路有问题还是代码哪里写错了??

第1个回答  2011-10-09
你用的应该是ms sql server吧,字段类型都是varchar了,你还当date类型来用,当然不行了
你直接修改“计费终止日期”栏位的类型,从carchar改成date类型,用sql server提供的编辑界面来改,然后再调用“select dateadd(yyyy,-1,计费终止日期) from temp7”

...触发器 错误:向变量赋值的 SELECT 语句不能与数据检索操作结合...
首先第一个错误:你没有用触发器格式,你那个inserted要在触发器中才能用。找不到数据当然赋值失败!你最好写全程序!不然没人能看懂!

SQL。。server级触发器代码问题。。高手》》
当尝试 DELETE、INSERT 或 UPDATE 操作时,Transact-SQL语句中指定的触发器操作将生效。触发器可以包含任意数量和种类的 Transact-SQL 语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的 Transact-SQL 语句常常包含控制流语言。CREATE TRIGGER 语句中使用几个特殊的表: deleted 和 ins...

SQL插入错误: 列名或所提供值的数目与表定义不匹配。
在做插入数据操作时,提示错误信息:插入错误: 列名或所提供值的数目与表定义不匹配。数据库表中有三个个字段:id,name,pwd,执行的SQL语句如下:string sql = "insert into [User] values('"+name+"','"+pwd+" ')"; \/\/name,pwd 为变量 SQL语句没有错误,经过查找,发现是ID设置错误,一般...

ASP中 sql语句和变量的拼接问题。
一、你把[& a]写到了引号内部,那么他就变成字符串的一部分了,因此不会把值传入。修改:sql="select * from file where name like" & a 二、sql=sql1&" where jrzynl<10 " 运行成功的原因是sql1和后面的[" where jrzynl<10 "]之间有一个空格。而[sql=sql1&sql2]则没有导致了sql文...

程序设计中的指令是什么?有哪几种?
汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且...

select语句
如聚合函数来计算数据,JOIN操作来结合多个表的数据,以及排序和分组功能等。这些功能使得SELECT语句能够执行更复杂的查询操作。总的来说,SELECT语句是SQL的核心组成部分,用于从数据库表中检索数据。通过结合不同的子句和功能,可以执行各种复杂的查询操作,以满足不同的数据处理需求。

SQL 语句 select sum(a) from table1 where b=3
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', '...

关于MySQL中的表锁和行锁
MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。在本书的示例中,显式加锁基本上都是为了方便而已,并非必须如此。 给MyISAM表显示加锁,一...

在SQLServer中,下面关于视图的描述,说法正确的是()。
1、视图是一种基于表而定制的虚拟表。2、视图兼有查询和表的特点。3、视图与表类似的地方是:可以用来更新表中的信息,并将更新结果永远保存在磁盘上->得出B选项正确。4、它与查询类似的地方是,可以用来从一个或多个关联的表中查找有用的信息。->得出A选项正确 答案补充 。

sql server有哪些查询优化方法
没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程。 13、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I\/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他...

相似回答