我试图做的是采取从存储过程的结果,并把它们放到一个临时表...存储过程,以表变量问题
是这样的:
DECLARE @Table TABLE(
[ID] int,
[CostA] real,
[CostB] real,
[CostC] real
)
INSERT INTO @Table
EXECUTE [dbo].[CostProcedure]
@RootId = 123
@Rate = 20
--THEN:
SELECT * FROM @Table -- Gives Me:
ID CostA CostB CostC
10 0 0 0
-- HOWEVER
EXECUTE [dbo].[CostProcedure]
@RootId = 123
@Rate = 20
--GIVES ME
ID CostA CostB CostC
10 1.0987 0.9837 0.65463
所以我的问题是,由于存储过程显然返回正确的结果,为什么当我将它们插入到表变量中时,它只插入结果的第一列,并在后续列上给出全零?有没有这个我不知道的一些已知问题?我甚至尝试:
INSERT INTO @Table([ID],[CostA],[CostB],[CostC])
EXECUTE [dbo].[CostProcedure]
@RootId = 123
@Rate = 20
它得到相同的结果...
我甚至尝试倒退,并试图临时表(创建表#whatever)......还是一样的结果......什么我错过了吗?
我只是想知道...如果CostProcedure里面有一个StoredProcedure,它将一个值写入临时表,就像上面一样,也许在存储过程的写入级别上有一些限制到临时表?
这是我的一个铸造问题吗?存储过程结果集中列的数据类型是什么? – MyItchyChin 2009-07-24 17:44:24
我确定这不是问题,但@RootId = 123之后不应该有逗号? – devuxer 2009-07-24 17:51:08