这样的sql语句为什么错了??

geniusqing 2006-01-24 05:18:43
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+'union'
select @s
exec(@s)
错误! 又问怎样得到下面的两句

select fdesc from fcDepartment unoin
select fdesc from fcDepartment unoin
能得到结果
...全文
86 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wazh 2006-01-24
  • 打赏
  • 举报
回复
--应该这样才对啊

select fdesc from fcDepartment union select fdesc from fcDepartment


--union两边都要有空格语法才对
Comer 2006-01-24
  • 打赏
  • 举报
回复
select fdesc from fcDepartment unionselect fdesc from fcDepartment

明显是缺个空格,怎么自己不动动脑筋呢、
OracleRoob 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+' union '+@s
exec(@s)

--union 两边都要有空格
-狙击手- 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+' union '+@s
exec(@s)

---

select fdesc from fcDepartment union select fdesc from fcDepartment
geniusqing 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+'union'+@s
exec(@s)
不能执行阿,因为 select @s为这个
select fdesc from fcDepartment unionselect fdesc from fcDepartment
QQMagicer 2006-01-24
  • 打赏
  • 举报
回复
搂主的语法有问题,至少最后一个union是不正确的
OracleRoob 2006-01-24
  • 打赏
  • 举报
回复


动态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
mislrb 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+'union'+@s
exec(@s)
-狙击手- 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
--set @s=@s+'union'
select @s
exec(@s)

OracleRoob 2006-01-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s='select fdesc from fcDepartment '
set @s=@s+'union'
select @s
exec(@s)

错误!
-----------------------------
select fdesc from fcDepartment union --只有一个Select语句,不需要用union

子陌红尘 2006-01-24
  • 打赏
  • 举报
回复
unoin 哪个查询?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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