2008-10-04 7 views
3

SP1을 실행할 때 SP2가 SP1 내에서 실행되지 않는 것으로 나타났습니다. 다음은 저장 프로 시저가 다른 저장 프로 시저 내에서 실행되지 않음

은 SP1의 구조 :

ALTER PROCEDURE SP1 AS BEGIN 

Declare c1 cursor.... 

open c1 fetch next from c1 ... 

while @@fetch_status = 0 Begin 

... 

Fetch Next from c1 end 

close c1 

deallocate c1 

exec sp2 

end 
그들이 '출력 창으로 SQL 서버 2005 관리 스튜디오에서'출력 창 '에 인쇄하는 경우 내가 PRINT 문 출력의 비를 볼

'비었다.

+0

다음 가져 오기를하지 않을 수도 있습니다. 그것들은 실제로 효율적이지 못하고 성능에 많은 영향을줍니다. –

+0

다음에 가져 오기를 사용하지 않고 다른 방법을 제안 해 주시겠습니까? – test

+0

여기를보십시오 : http://www.code-magazine.com/Article.aspx?quickid=060113 – Auron

답변

3

저장 프로 시저 코드를 단일 쿼리로 실행하면 어떻게됩니까? exec 앞뒤에 PRINT 문을 넣으면 두 결과를 모두 볼 수 있습니까?

  • 그렇다면 저장 프로 시저가 실행되어야합니다. 아마 네가하고 싶은 일을하지 않을거야.
  • 인쇄 출력이 보이지 않으면주기에 문제가있는 것입니다.
  • 두 번째 출력이 보이지 않지만 첫 번째 출력이 보이면 두 번째 저장 프로 시저에 문제가있는 것입니다. 당신을하는 데 도움이,하지만 내 경험에서 가장 인기 이유가있는 경우
0

나는 확실하지 않다 :

  1. sp2 그것을 만드는 몇 가지 매개 변수를 얻을 수 null 가치 - 당신은 문자열에서 이름을 구축 즉, 그 중 하나는 null입니다.
  2. sp2
  3. 내부 일부 조건을 가지고 있으며, 그들 중 누구도 그렇게 사실입니다 sp2가 전혀 코드를 실행하지 - 매개 변수 중 하나가 varchar을 입력입니다 즉, 당신이 안으로 그것을 확인, 값 VALUE을 통과하지만, 실제 값이 sp2에 전달 V입니다 (varchar 길이가 정의되지 않았으므로).
  4. sp2은 하나의 매개 변수가 null이고 전체 쿼리가 null이되는 매개 변수에서 쿼리를 작성합니다.

sp2의 호출 후 및 이전 PRINT를 넣으면 어떤 출력을 볼 수 있습니까?

0

@@ error를 사용하면 이전 명령문을 실행할 때 오류가 있는지 확인할 수 있습니다.