2010-05-10 5 views
0

S'il vous plaît, le premier TSQL fonctionne FINE, le second ne fonctionne pas. Je suppose que ce doit être une simple erreur, puisque je ne suis pas habitué à T-SQL. Merci pour vos réponses. R Conte.T-SQL SQL Server - Procédure stockée avec le paramètre

*** 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

Quel est le type de données du champ pesStatus? Est-ce nchar (3)? – wcm

+0

Oui, il est ... Type de données: nchar Longueur: 3 condensé Type de données: nchar (3) Taille: 6 Valeur par défaut: (N'pre ') rconte –

Répondre

0

Essayez

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

ou simplement

spPesquisasPorStatus N'dis' 
+0

merci, pas d'utilisation ... Exécution [rconte]. [SpPesquisasPorStatusWITHPARM] (@parm = N 'dis'). pesId Colonne1 pesStatus pesPesGrupoRespondent pesPesQuestionario pesDataPrevistaDisponivel pesDataPrevistaEncerramento pesDono ----------- -------------------- Aucune ligne affectée. (0 ligne (s) renvoyée) @RETURN_VALUE = 0 Terminé en cours d'exécution [rconte]. [SpPesquisasPorStatusWITHPARM]. –

0

Ok, pour ma deuxième tentative, je suis allé de l'avant et a créé la table et STORED proc edure dans mon propre local db!

Votre code fonctionne parfaitement, comme vous pouvez le voir dans ma capture d'écran. Faites-vous quelque chose de stupide, comme exécuter la mauvaise procédure stockée accidentellement, ou peut-être l'exécuter sur la mauvaise base de données (cela arrive à tout le monde - ne vous sentez pas mal!)?

Ou peut-être que je fais quelque chose de mal? Mais j'ai fait une table comme j'imagine la vôtre, et j'ai utilisé votre procédure stockée exacte. Cela a bien fonctionné avec et sans le paramètre 'dis'. J'espère que ça aide!

Vous pourriez avoir besoin de repartir à zéro sur une nouvelle base de données dans une nouvelle session juste pour un « test de cohérence »

Click here for FULL SIZE

alt text

+0

Merci beaucoup pour votre aide. Il doit en effet y avoir une erreur stupide. Je viens de lancer la procédure sans aucun paramètre. Il fonctionne bien et affiche un résultat (en utilisant "EXECUTE" dans VS2005). Puis je le change juste en ajoutant un paramètre, disons @pesStatus; Je l'exécute en utilisant la commande EXECUTE dans V.Studio 2005; il demande un paramètre que je donne N'dis ', ça ne marche pas. C'est tout. Je vois ce que je peux faire ... –

+0

Content de pouvoir aider. J'espère que vous comprendrez.Si vous le comprenez, veuillez revenir et marquer ceci comme réponse :) – Chris

0

Quand il vous demande les paramètres du VS Dans la boîte de dialogue, placez simplement la chaîne dans la colonne Valeur, ne la placez pas entre guillemets ou avec un N devant elle.

dire dis plutôt que N'dis'

Visual Studio met automatiquement les chaînes dans le format correct lorsque vous sélectionnez « Exécuter une procédure stockée ... » dans le menu clic droit.

Questions connexes