我試圖做的是採取從存儲過程的結果,並把它們放到一個臨時表...存儲過程,以表變量問題
是這樣的:
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