--用动态SQL create proc p @datebase char(20), @user char(20), @table char(20) as declare @sql varchar(3000) set @sql='SELECT * FROM '+@datebase+'.'+@user+'.'+@table exec(@sql); go
create proc p @datebase varchar(20), @user varchar(20), @table varchar(20) as exec('SELECT * FROM ' + @datebase' + '.' + @user + '.' + @table) go
SELECT * FROM @datebase.@user.@table ---------------- 不能直接使用变量的, 要么使用动态,要么使用常量表, 这是1楼的动态, --用动态SQL create proc p @datebase char(20), @user char(20), @table char(20) as declare @sql varchar(4000) set @sql='SELECT * FROM '+@datebase+'.'+@user+'.'+@table exec(@sql); go 静态的话,就是固定的物理表, create proc p @datebase char(20), @user char(20), @table char(20) as SELECT * FROM datebase.user.tableAAA go
恩, 因为是动态SQL语句
SELECT * FROM @datebase.@user.@table ——不能这么搞啊,兄弟组成语句串后EXEC
create proc p @datebase char(20), @user char(20), @table char(20) as SELECT * FROM @table go 可以 SELECT * FROM @datebase.@user.@table不可以exec('SELECT * FROM '+@datebase+'.'+@user+'.'+@table) 可以
SELECT * FROM @datebase.@user.@table ================== 不能直接使用变量的, 要么使用动态,要么使用常量表
exec('SELECT * FROM '+@datebase+'.'+@user+'.'+@table)
create proc p @datebase char(20), @user char(20), @table char(20) as SELECT * FROM @datebase.@user.@table go LZ 你这个是查询数据库.用户名.表明 语法错误的 静态的不是,动态的不是 所以错误的
--得用动态sql语句 create proc p @datebase char(20), @user char(20), @table char(20) as exec('SELECT * FROM ['+@datebase+'].['+@user+'].['+@table+']') go
create proc p @datebase char(20), @user char(20), @table char(20) as exec sp_executesql 'SELECT * FROM '+@datebase+'.'+@user+'.'+@table go
--用动态SQL
create proc p
@datebase char(20),
@user char(20),
@table char(20)
as
declare
@sql varchar(3000)
set @sql='SELECT * FROM '+@datebase+'.'+@user+'.'+@table
exec(@sql);
go
@datebase varchar(20),
@user varchar(20),
@table varchar(20)
as
exec('SELECT * FROM ' + @datebase' + '.' + @user + '.' + @table)
go
----------------
不能直接使用变量的,
要么使用动态,要么使用常量表,
这是1楼的动态,
--用动态SQL
create proc p
@datebase char(20),
@user char(20),
@table char(20)
as
declare
@sql varchar(4000)
set @sql='SELECT * FROM '+@datebase+'.'+@user+'.'+@table
exec(@sql);
go
静态的话,就是固定的物理表,
create proc p
@datebase char(20),
@user char(20),
@table char(20)
as
SELECT * FROM datebase.user.tableAAA
go
恩, 因为是动态SQL语句
@datebase char(20),
@user char(20),
@table char(20)
as
SELECT * FROM @table
go 可以
SELECT * FROM @datebase.@user.@table不可以exec('SELECT * FROM '+@datebase+'.'+@user+'.'+@table)
可以
==================
不能直接使用变量的,
要么使用动态,要么使用常量表
@datebase char(20),
@user char(20),
@table char(20)
as
SELECT * FROM @datebase.@user.@table
go
LZ
你这个是查询数据库.用户名.表明
语法错误的
静态的不是,动态的不是
所以错误的
create proc p
@datebase char(20),
@user char(20),
@table char(20)
as exec('SELECT * FROM ['+@datebase+'].['+@user+'].['+@table+']')
go
create proc p
@datebase char(20),
@user char(20),
@table char(20)
as
exec sp_executesql 'SELECT * FROM '+@datebase+'.'+@user+'.'+@table
go