写一个 function 不行吗
解决方案 »
- 十万火急!!!熟悉SSIS的人进来看下 ,高分相送
- SQL语句更新一定时间范围内的随机时间值带后面的时分秒的
- 数据库密码编码
- SQL 查询问题。急急急急急急急急急急!!!!!
- 雪地里跪等
- 局域网内远程Analysis Manager无法访问我的机器上的sql server
- 请问有谁见过200多和300多个字段的表吗????
- 我的问题
- 不知道各位java在mssql2000里的分页有什么比较好的方法,100分等待,不够可以再给了
- 请问,文件的“自动增长设置”是干什么用的?是否都要设置自动增长?增长多少才合适?有什么衡量标准吗?谢谢!
- 关于请求订阅的问题,请高手们看看!
- 多少个表的系统算是中型以上系统?
我的过程代码就是用表名做参数的。
但是要用sp_executesql 语句执行才可以。
去试试
go
declare @table varchar(50)
declare @sqls nvarchar(2000)
set @table='authors'set @sqls='select * from '+@table
exec sp_executesql @sqls @sqls中可以包含表名参数
注意了:@sqls 一定要是nvarchar类型才可以。
去试试
[交流]动态SQL语句1:
普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:
字段名,表名,数据库名之类作为变量时,必须用动态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)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确,3: 输出参数
eg:
declare @num,
@sqls
set @sqls='select count(*) from '+@servername+'.a.dbo.b'
exec(@sqls)
我如何能将exec执行的结果存入变量@num中declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
exec sp_executesql @sqls,N'@a int output',@num output
select @num