2010-05-10 37 views
0

請首先將TSQL設置爲FINE,其次不要。我想這肯定是一個簡單的錯誤,因爲我不習慣T-SQL。謝謝你的答案。 R Conte。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 2010-05-11 20:08:46

+0

是的,這是... 數據類型:NCHAR 長度:3 簡明數據類型:NCHAR(3) 尺寸:6 默認:(N'pre') rconte – 2010-05-12 01:24:19

回答

0

嘗試

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

或者乾脆

spPesquisasPorStatus N'dis' 
+0

感謝,沒有用... 運行[rconte]。[spPesquisasPorStatusWITHPARM](@parm = N'dis')。 pesId Column1 pesStatus pesPesGrupoRespondente pesPesQuestionario pesDataPrevistaDisponivel pesDataPrevistaEncerramento pesDono ----------- ---------------------- 沒有行受到影響。 (0行返回) @RETURN_VALUE = 0 已完成運行[rconte]。[spPesquisasPorStatusWITHPARM]。 – 2010-05-11 11:43:01

0

好吧,我的第二次嘗試,我繼續創建表和存儲PROC在我自己的本地數據庫中修改!

您的代碼完美無缺地工作,正如您在截圖中看到的一樣。你是否在做一些愚蠢的事情,比如意外地運行了錯誤的存儲過程,或者在錯誤的數據庫上運行它(這發生在每個人身上 - 不要感覺不好!)?

或者我做錯了什麼?但是我製作了一張像我想象的那樣的桌子,並使用了確切的存儲過程。沒有'dis'參數,它工作得很好。我希望這有幫助!

您可能需要從頭開始一個新的會話的新的數據庫只是一個「合理性檢查」

Click here for FULL SIZE

alt text

+0

非常感謝您的幫助。確實有一些愚蠢的錯誤。我只是運行沒有parms的程序。它運行正常並顯示結果(使用VS2005中的「EXECUTE」)。然後我通過添加一個參數來改變它,比如@pesStatus;我使用V.Studio 2005中的EXECUTE命令運行它;它要求給我一個參數N'dis',它不起作用。就這樣。我看到我能做什麼... – 2010-05-11 20:44:06

+0

很高興我能幫到你。我希望你弄明白。如果你知道它,請回來並將其標記爲答案:) – Chris 2010-05-11 21:44:49

0

當它要求你在VS參數對話框中,只需將該字符串放在值列中,不要將其放在引號中或前面帶有N。當您選擇

dis 而不是N'dis'

的Visual Studio會自動將字符串以正確的格式從右鍵菜單中的「執行存儲過程...」。