select语句中的 FROM 后面能否跟表的变量? (100分)

  • 主题发起人 主题发起人 张丽敏
  • 开始时间 开始时间

张丽敏

Unregistered / Unconfirmed
GUEST, unregistred user!
我试图在 FROM 后面跟表的变量. 如:

CREATE PROCEDURE DBO.tmp (@company char(2)) AS
declare @TABLE nchar

if @company = '01' set @TABLE = T1
if @company = '02' set @TABLE = T2
if @company = '03' set @TABLE = T3
...

SELECT * FROM @TABLE

GO

这样是不行的, 提示没定义@TABLE类型.

其实, 可以
if @cpmpany = '01' (select * from T1)
if @cpmpany = '02' (select * from T2)
但我这 select语句 较为复杂, 也不方便修改.

若能在 FROM 后面跟变量就较好看, 也易修改.
请求各位帮忙!!
 
如果不使用存储过程,可以使用rxlib中的query,他支持query中的变量
 
请问, rxlib是什么?
谢谢!
 
select @table = 't1'

excute('select * from' + @table)
 
select @table = 't1'

excute('select * from' + @table)

应该是ececute
 
select @table = 't1'

excute('select * from' + @table)

又错了,应该是execute
 
CREATE PROCEDURE DBO.tmp (@company char(2)) AS
declare @TABLE nchar
select @company =
case @company
when '01' then 't1'
when '02' then 't2'
when '03' then 't3'
end
execute('select * from '+@Company)
 
张丽敏(小姐?),欢迎你成为delphi fan
rxlib是最著名的delphi控件,http://go6.163.com/~delphi/应该有下载的,
我刚从那里看过。
 
下面做法是否满足要求?

tablename, sqlstr : string;

tablename ='aa.dbf';
sqlstr = 'select * from ' + tablename + ' where ....';

query1.aql.text = sqlstr;
 
谢谢你们!
 
后退
顶部