问个关于字符串语句的问题 谢谢大家 下面是我昨天发的帖子 问题在那有详细的介绍,希望大家帮我看下 谢谢了http://topic.csdn.net/u/20080922/17/b9cb74f3-e471-405b-91b9-8782698df2b9.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num 在你原来的帖子了回复了。。应该是你存储过程中的变量@StartTime 的原因!! 你试着把这句:declare @StartTime varchar(20)改成declare @StartTime datetime 我以前也遇到过这种情况,SQL Server中按照字符比较和按照时间比较是不同的,这也是你代入真实时间没有问题的原因! 好了,下班了,希望你能够解决这个问题。 怎么样将查询的结果放在select中比较再次查询?select中查询出结果然后显示出 函数内不能使用getdate()? 统计2万条数据中的100种条件分别由多少条,竟然用了8秒怎么办 关于查找结果需要特殊排序的问题 请教一个如果相同就替换,不相同就新增的命令 sql 语句求助 老调重谈,自增问题,一句话20分! 求帮忙优化一个存储过程 用ACCESS2000开发,后台为SQL SERVER7的关于存储过程 为什么在数据库导入表的时候会丢失主键信息和默认值等? 导入文本文件到SQL2000,最后一步提示列数过多 选出最大、最小、最前、最后四条记录
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
你试着把这句:declare @StartTime varchar(20)改成declare @StartTime datetime
我以前也遇到过这种情况,SQL Server中按照字符比较和按照时间比较是不同的,这也是你代入真实时间没有问题的原因!
好了,下班了,希望你能够解决这个问题。