은 내가 ... 저장 프로 시저의 결과를 가지고 임시 테이블에 넣어하면된다 노력하고있어 저장 프로 시저가
은 다음과 같습니다 : 그래서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