SQL SERVER的Transact-SQL中用变量或参数表示表名或列名(100分)

  • 主题发起人 主题发起人 delphi与酒
  • 开始时间 开始时间
D

delphi与酒

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个错误:
use pubs
go
declare @a sysname /*或char等数据类型*/
set @a='authors' /*表名*/

select * from authors /*这是正确的*/
select * from @a /*@a在这里是不允许的*/

问题:
是否有合适的数据类型、操作符、函数等方法解决。

起因:
在存储过程中用参数传递表明或列名。

对所有回帖均表示万分感激。

谢谢

 
有,用拼接字符串的方法,并exec执行。
use pubs
go
declare @a sysname /*或char等数据类型*/
declare sql nvarchar(200)
select @a='authors' /*表名*/
select @sql='select * from '+@a
exec @sql

还有问题可以在讨论。:)
 
谢谢你的回答。

仍然不可以。系统认为select * from authors不是存储过程,不可以用exec执行。

Server: Msg 2812, Level 16, State 62, Line 5
Could not find stored procedure 'select * from authors'.

请继续赐教。
 
declare @a sysname /*或char等数据类型*/
declare @mysql nvarchar(200)
select @a='bill_table' /*表名*/
select @mysql='select * from '+@a
exec (@mysql)
加个括号
 
感谢二位。改天请你们喝酒。现在先把分送上。
 
后退
顶部