T-SQL中用变量创建表、列名,应该怎么做?用动态变量设置列名,并且取到值如AVG SUM等?
2010-08-26 17:46
519 查看
用动态SQL.
--动态sql语句基本语法
SQL code
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
--动态sql语句基本语法
SQL code
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 @n1um nvarchar(200) declare @num nvarchar(200) declare @sqls nvarchar(200) set @sqls='select @a=count(*) from t_WorkingFenLei ' exec sp_executesql @sqls,N'@a int output',@num output set @n1um=@num select @n1um
相关文章推荐
- 允许sqlplus终端打印dbms_output输出,应该这样设置环境变量
- 设置SQL*PLUS的启动环境变量
- 怎么设置session无响应超时时间并且自动返回登陆页面
- SQLPLUS中环境变量的设置和显示
- C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?
- python怎么设置环境变量
- 怎么设置环境变量
- bash: sqlplus: command not found 及 oracle 环境变量设置
- sql操作语句,怎么新建变量。这样就不用每次修改都修改很长的表了
- mysql设置临时变量一次性查出多层依赖的sql语句
- Oracle SQLPlus 一些使用经验记录(设置环境变量和字符串比较)
- 在C#中怎么设置一个全局变量,方便我在其他的窗口中可以调用
- Centos下mysql数据库安装、创建数据库、utf8编码设置、外部访问授权、导入sql执行、开机启动(系列1)
- 怎么把 sql语句查询的值赋给变量
- ORACLE SQL*PLUS环境变量设置及说明
- sql语句创建表前怎么选中数据库
- MAC系统下 win7虚拟机上网应该怎么设置啊
- java环境变量怎么设置
- C/C++ , 几个源文件共用一些全局变量,全局变量的文件应该怎么写?
- 怎么取消环境变量设置 shell