は、ストアドプロシージャから結果を取得し、一時テーブルに入れてある...ストアドプロシージャの私が何をしようとしている
は次のようになります。だから、
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
私の質問は、ストアドプロシージャは明らかに適切な結果を返すので、なぜ、テーブル変数に挿入すると結果の最初の列だけが挿入され、後続の列にすべて0が返されますか?私が知らないこれに関する既知の問題はありますか?私も試してみました:
INSERT INTO @Table([ID],[CostA],[CostB],[CostC])
EXECUTE [dbo].[CostProcedure]
@RootId = 123
@Rate = 20
それは同じ結果をもたらした...私も先祖返りを試みたが、それでも同じ結果を一時テーブル(テーブル#whateverを作成します)...を試してみました
...何私は行方不明ですか?
私はちょっと疑問に思っています... CostProcedureがその内部にStoredProcedureを持っていて、上記と同じ値をテンポラリテーブルに書き込む場合は、ストアドプロシージャをネストできるレベルの数に制限がありますテンポラリテーブルに?
これはキャスト問題として私を襲う?ストアドプロシージャの結果セットの列のデータ型は何ですか? – MyItchyChin
これは問題ではないと確信していますが、@RootId = 123の後にカンマがあってはいけませんか? – devuxer
@CptSkippy、私はそれもそうだと思っていましたが、ほとんど何も実際に暗黙的に変換することができます(CASTまたはCONVERTする必要はありません)。確かに、例の数値は実数に変換される可能性があります。 – devuxer