日期:2014-05-18  浏览次数:20500 次

sql server 有意思的问题...在线等!!!
declare   @a   vachar(50)
declare   @b   vachar(50)
set   @a= 'id '                       --id表示user表中的一个字段名
set   @b= 'user '                   --user表示一个表
select   @a   from   @b

代码如上,但是这样写执行时出现问题:未定义标量@a

大家明白我的意思了吧,我现在就是想从一个表中查询一个字段的内容,很简单吧?!


其实我也不想这么画蛇添足的去实现它,但是我现在想在数据库中把所有表所存储内容包含“坏人”的
地方都替换成“好人”,我想到的是通过系统表把表和字段找出来然后就能实现了,
但是我上面那段代码执行出现错误,于是我觉得似乎我的想法不可行。有什么好的办法没,请指点,谢谢。

------解决方案--------------------
declare @a vachar(50)
declare @b vachar(50)
set @a= 'id ' --id表示user表中的一个字段名
set @b= 'user ' --user表示一个表
print ( 'select '+@a+ ' from '@b+ ' where '+@a+ '= ' '坏人 ' ' ')
exec ( 'select '+@a+ ' from '@b+ ' where '+@a+ '= ' '坏人 ' ' ')

------解决方案--------------------
lz定义是搞错了 "declare @a vachar(50) "---> "declare @a varchar(50) "

declare @sql varchar(1000),@a varchar(50),
@b varchar(50)
set @a= 'id '
set @b= 'user '
SET @sql= 'select '+ @a + ' from '+ @b
exec (@sql)
------解决方案--------------------
-- 呵,是哦,楼主变量定义有问题,笔误吧
declare @a varchar(50)
declare @b varchar(50)
set @a= 'id ' --id表示user表中的一个字段名
set @b= 'user ' --user表示一个表
print ( 'select '+@a+ ' from '@b+ ' where '+@a+ '= ' '坏人 ' ' ')
exec ( 'select '+@a+ ' from '@b+ ' where '+@a+ '= ' '坏人 ' ' ')