2013-05-10 2 views
-1

안녕하십니까. SQL에 익숙하지 않고 저장 프로 시저에 문제가 있습니다. 먼저 SQL 2008을 사용하고 있습니다. 차이가 있는지 여부는 알 수 없습니다. 그래서 여기에 내 문제가있다. 내가 저장 프로 시저, 다른 값이 전달되고있는 연속 2 회 호출합니다. (BTW, 난 그냥 with recompile 부분을 추가했다. 그것은 도움이되지 않습니다)저장 프로 시저 - 두 번째 호출에서 오류 발생

EXECUTE crstored.sp_hhcAllActivityInstreamLoop 
      @measureVarIDName ='staticPayact6moID' 
      ,@measureSuppVarIDName ='payact6moID' 
      ,@measureDesc ='payact6moDesc' 
      ,@measureSuppTable ='crsupp.payact6mo' 
      WITH RECOMPILE; 
      GO 

EXECUTE crstored.sp_hhcAllActivityInstreamLoop 
      @measureVarIDName ='staticJourneyID' 
      ,@measureSuppVarIDName ='journeyID' 
      ,@measureDesc ='journeyDesc' 
      ,@measureSuppTable ='crsupp.journey' 
      WITH RECOMPILE; 
      GO 

내가 전화를 처음으로, 그것은 것 운영. 두 번째로 다음을 얻습니다.

msg 16, 상태 1, 줄 20 잘못된 열 이름 'staticJourneyID'입니다. 메시지 207, 수준 16, 상태 1, 줄 20 잘못된 열 'staticJourneyID'.

이 문제를 해결하기 위해 저장 프로 시저를 삭제합니다. 반쯤 다시 컴파일하면 아무것도 수행하지 않지만 매개 변수를 가져 와서 매개 변수 중 하나를 사용하여 간단한 선택을 수행하십시오. 그것을 실행하십시오. 저장 프로 시저를 삭제하십시오. 전체 절차를 다시 컴파일하십시오. 그런 다음 2 차 통화를 위해 실행할 수 있습니다. 그러나 이제는 JourneyID에 대해서만 실행되도록 설정되었으며 payAct6mos 변수로 돌아가서 호출해야한다면 같은 삭제, 다시 컴파일, 실행 시나리오를 실행해야합니다. 누구든지 어떤 제안이 있습니까? 지금 당장 생각할 수있는 유일한 점은 같은 이름의 다른 두 개의 복사본을 갖는 것입니다. 나는 그것을 유지하는 것을 싫어한다. 그것은, 그러나 때문에 나는 매개 변수를 사용하고 방법의 차이가 있는지

또한, 나도 몰라, 내가 가진 저장 프로 시저에 내 코드를 둘러싸 들었다 :

select @[email protected]+'  type line of code here  ' 

감사합니다!


단지 내 문제에 대한 후속 조치. 나는 그것을 알아. 내가 말했듯이, 나는 SQL의 초보자 일뿐입니다. 그래서, 내가 떨어 뜨리고 있던 테이블을 밝혀 냈습니다. SP에서 동적 SQL을 사용하지 않았습니다. "일반"SQL을 사용하여 삭제 한 즉시 호출이 정상적으로 실행되었습니다. 왜 그런지는 모르겠지만, 당신은 그것을 가지고 있습니다. 모든 사람의 도움에 감사드립니다.

+0

저장 프로 시저 코드를 보여줍니다. – RBarryYoung

+0

너무 많은 문자 때문에 SP를 게시 할 수 없습니다. – user2370154

답변

4

이것은 추측입니다. 내 생각에 가장 중요한 것은 저장 프로 시저의 두 번째 부분이 동적 SQL을 사용한다는 것입니다. @measureVarIDName에 이름을 사용하여 SQL 문을 생성합니다.

보고있는 테이블에 staticPayact6moID 열이 있습니다.

staticJourneyID은 테이블에 없습니다.

즉, 두 번째 호출에서 첫 번째 인수 (적어도)를 수정해야합니다.

+0

당신은 틀린 품목입니다. 동적 SQL을 사용하고 있으며 매개 변수를 사용하여 일부 코드를 작성합니다. 일단 SP를 다시 컴파일하면 아무 문제없이 staticJourneyID를 사용하여 SP를 호출 할 수 있기 때문에 캐시에 무언가를 유지한다는 의미입니까? – user2370154

+0

@ user2370154 . . 아니요. 제 경험상, 저장 프로 시저의 인수는 꽤 잘 작동합니다. 더 많은 안내를 위해 저장 프로 시저의 코드를 게시해야합니다. 또 하나. . . 매번 같은 코드가 호출 될 때마다 저장 프로 시저 호출에 데이터베이스의 이름을 포함시킵니다. –