create proc p
@datebase char(20),
@user char(20),
@table char(20)
as
SELECT * FROM @datebase.@user.@table
go
这个到底哪个出问题了?

解决方案 »

  1.   


    --用动态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
      

  2.   

    create proc p 
    @datebase varchar(20), 
    @user varchar(20), 
    @table varchar(20) 
    as 
    exec('SELECT * FROM ' + @datebase' + '.' + @user + '.' + @table)
    go 
      

  3.   

    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 
      

  4.   


    恩, 因为是动态SQL语句
      

  5.   

    SELECT * FROM @datebase.@user.@table    ——不能这么搞啊,兄弟组成语句串后EXEC
      

  6.   

    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)
    可以
      

  7.   

    SELECT * FROM @datebase.@user.@table 
    ==================
    不能直接使用变量的, 
    要么使用动态,要么使用常量表
      

  8.   

    exec('SELECT * FROM '+@datebase+'.'+@user+'.'+@table)
      

  9.   

    create proc p 
    @datebase char(20), 
    @user char(20), 
    @table char(20) 
    as 
    SELECT * FROM @datebase.@user.@table 
    go 
    LZ
    你这个是查询数据库.用户名.表明
    语法错误的
    静态的不是,动态的不是
    所以错误的
      

  10.   

    --得用动态sql语句
    create proc p 
    @datebase char(20), 
    @user char(20), 
    @table char(20) 
    as exec('SELECT * FROM ['+@datebase+'].['+@user+'].['+@table+']')
    go 
      

  11.   


    create proc p
    @datebase char(20),
    @user char(20),
    @table char(20)
    as
    exec sp_executesql 'SELECT * FROM '+@datebase+'.'+@user+'.'+@table
    go