求助:Sql Server2000 语句放入变量问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 03:47:23
求助:
declare @sql varchar(100)
select 'adsf'+payterms from sales
把这个SQL语句放在变量 @sql 中怎么处理?
不是把值放进变量,,
是把 select 'adsf'+payterms from sales
这个语句放进 @sql 变量中

就是@sql =’select payterms from sales'这样的,

但是select出来的字段不是我需要的,要在前面加一些特定的字母
如:select 'adsf'+payterms from sales

dyxg041 你说的那样是可以,,但是不是我那种情况
我要把select 'adsf'+payterms from sales 一起给变量。。问题出现在。前面有要一个字符串的

这么写
select @sql='select ''adsf''+payterms from sales'

你这样选择出来的是字符不是你要的数据库的字段
如果要选择数据库字段需要用动态sql ,用exec(),把你的sql语句放到括号里面就可以了
@sql =’select payterms from sales'
exec(@sql)

普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N

2:
字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = '[name]'
Select @fname from sysobjects -- 错误
Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格
exec sp_executesql N' select ' + @fname + ' from sysobjects'
当然将字符串改成变量的形式也可
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错

declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)