2010-05-10 4 views
0

첫 번째 TSQL은 FINE, 두 번째 TSQL은 작동하지 않습니다. 나는 T-SQL에 익숙하지 않기 때문에 간단한 실수가 될 것입니다. 답변 해 주셔서 감사합니다. R 콩테.T-SQL SQL Server - 매개 변수가있는 저장 프로 시저

*** WORKS FINE *********************************** (parm hard-coded) 
ALTER PROCEDURE rconte.spPesquisasPorStatus 

AS 
SET NOCOUNT ON 

SELECT pesId, RTRIM(pesNome), pesStatus, 
      pesPesGrupoRespondente, pesPesQuestionario, 
     pesDataPrevistaDisponivel, pesDataPrevistaEncerramento, 
     pesDono 
FROM dbo.tblPesquisas 
WHERE (pesStatus = 'dis') 
    ORDER BY pesId DESC 

RETURN 

    --------------------------------- 
 
Running [rconte].[spPesquisasPorStatus]. 

pesId  Column1                                       pesStatus pesPesGrupoRespondente pesPesQuestionario pesDataPrevistaDisponivel pesDataPrevistaEncerramento pesDono  
----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------- ---------------------- ------------------ ------------------------- --------------------------- ----------- 
29   XXXXXXXXX xxxxx                                   dis  17      28     5/5/2010 08:21:12   5/5/2010 08:21:12   1   
28   Xxxxxxxx xxxxxxxxxxxxx                                    dis  16      27     5/5/2010 07:44:12   5/5/2010 07:44:12   1   
27   Xxxxxxxxxxxxxxxxxxxxxxx 
*** DOES NOT WORK ************************ (using a parm; pesStatus is nchar(3)) 

ALTER PROCEDURE rconte.spPesquisasPorStatus 
    (@pPesStatus nchar(3) = 'dis') 
AS 
SET NOCOUNT ON 

SELECT pesId, RTRIM(pesNome), pesStatus, 
     pesPesGrupoRespondente, pesPesQuestionario, 
     pesDataPrevistaDisponivel, pesDataPrevistaEncerramento, 
     pesDono 
FROM dbo.tblPesquisas 
WHERE (pesStatus = @pPesStatus) 
ORDER BY pesId DESC 

RETURN 

--------------------------- 
 
Running [rconte].[spPesquisasPorStatus] (@pPesStatus = 'dis'). 

pesId  Column1                                       pesStatus pesPesGrupoRespondente pesPesQuestionario pesDataPrevistaDisponivel pesDataPrevistaEncerramento pesDono  
----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------- ---------------------- ------------------ ------------------------- --------------------------- ----------- 
No rows affected. 
(0 row(s) returned) 
@RETURN_VALUE = 0 
Finished running [rconte].[spPesquisasPorStatus] 
+0

pesStatus 필드의 데이터 유형은 무엇입니까? 그것은 nchar (3)입니까? – wcm

+0

예, 그것이 ... 데이터 형식 : 3 응축 데이터 형식 : 길이 NCHAR NCHAR (3) 크기 : 6 기본값 : (N'pre ') rconte –

답변

0

시도

[rconte].[spPesquisasPorStatus] (@pPesStatus = N'dis') 

하거나

spPesquisasPorStatus N'dis' 
+0

덕분에, 아니 사용을 ... [rconte]. [spPesquisasPorStatusWITHPARM] 실행 (@parm = N 'dis'). pesId Column1 pesStatus pesPesGrupoRespondentePesPesQueryarioPesDataPrevistaDesponivelPesDataPrevistaEncerramentoPesDono ----------- ---------------------- 영향을받지 않는 행이 있습니다. (0 행이 반환 됨) @RETURN_VALUE = 0 실행 완료 [rconte]. [spPesquisasPorStatusWITHPARM]. –

0

, 내 두 번째 시도를 들어, 내가 나서서 테이블을 생성하고 저장 확인 proc 내 로컬 DB에서 edure!

내 스크린 샷에서 볼 수 있듯이 코드가 완벽하게 작동합니다. 실수로 잘못 저장된 저장 프로 시저를 실행하거나 잘못된 데이터베이스에서 실행하는 것과 같은 바보 같은 작업을하고 있습니까? (모든 사람에게 발생합니다.) 기분이 좋지 않습니까?

아니면 내가 잘못하고있는 중입니까? 하지만 나는 네가 상상할 수있는 테이블을 만들었고 정확한 저장 프로 시저를 사용했다. 'dis'매개 변수가있는 경우와없는 경우 모두 정상적으로 작동했습니다. 이게 도움이 되길 바란다!

당신은 단지에 대한 새 세션에서 새 데이터베이스에 처음부터 다시 시작해야 할 수도 있습니다 "제정신 확인"는 VS의 매개 변수를 묻는 메시지

Click here for FULL SIZE

alt text

+0

도움 주셔서 대단히 감사합니다. 실제로 어리석은 실수가 있어야합니다. 난 그냥 parms없이 프로 시저를 실행합니다. 그것은 확인을 실행하고 결과를 보여줍니다 (VS2005 내에서 "EXECUTE"사용). 그런 다음 매개 변수를 추가하여 변경합니다. @pesStatus; V.Studio 2005 내에서 EXECUTE 명령을 사용하여 실행합니다. 그것은 N'dis를주는 매개 변수를 묻습니다. 작동하지 않습니다. 그게 다야. 내가 뭘 할 수 있는지 아프다. –

+0

다행이다. 나는 당신이 그것을 이해하기를 바랍니다.당신이 그것을 알아낼 경우, 돌아와서 대답으로 표시하십시오 :) – Chris

0

대화 상자에서 문자열을 값 열에 넣거나 따옴표로 묶지 말고 앞에 N을 붙입니다. 당신이 선택하면

dis 보다는 N'dis'

비주얼 스튜디오는 자동으로 올바른 형식으로 문자열을두고 "저장 프로 시저를 실행 ..."오른쪽 클릭 메뉴에서.

관련 문제