SQL语句问题?(50分)

  • 主题发起人 主题发起人 dingfuhai
  • 开始时间 开始时间
D

dingfuhai

Unregistered / Unconfirmed
GUEST, unregistred user!
DECLARE @T TABLE
(PK INT PRIMARY KEY, OTHER VARCHAR(5))
DECLARE @str VARCHAR(60)
INSERT INTO @T VALUES(2, 'XXX')
INSERT INTO @T VALUES(4, 'YYY')

SELECT * FROM @T
这样写正确

DECLARE @T TABLE
(PK INT PRIMARY KEY, OTHER VARCHAR(5))
DECLARE @str VARCHAR(60)
INSERT INTO @T VALUES(2, 'XXX')
INSERT INTO @T VALUES(4, 'YYY')

SET @str='SELECT * FROM @T'
EXEC (@str)
这样写错误!错误提示:

(所影响的行数为 1 行)

(所影响的行数为 1 行)

服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@T'。
求解!
 
@T是个变量,要查询的表是它所代表的值,而你的方法则查找的是名为“@T”的表了
应该是
SET @str='SELECT * FROM '+@T
EXEC (@str)
 
老问题了:
用变量传递表明必须用Exec执行
 
@T是个table类型的变量,
上面的方法怎么还是错误的?
 
同意萧月禾.
 
哦,把@T定义成字符串
 
我用的就是@T这个表变量,你不知道吗?table类型的。
 
table类型多用于sql函数的返回值中
用exec执行的话,其参数唯字符串型
 
我需要的就是一个table类型的表,而且还需要TOP @N ,@N为变量。怎么把两者放在一个SQL语句中
 
在存储过程开始处添加
set nocount on
试试,应该没问题,这个问题我以前遇到过。
 
用同样的方法把@N也组合到sql字符串中执行呀
我在这做了回答,你看看罢
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1134295
 
对不起,我需要动态生成表@T,怎么能把@N和@T放在一个SQL中
select TOP @N from @T?????
 
定义并创建成临时表,根据临时表的名称。。。。
 
接受答案了.
 
后退
顶部