T-SQL SQL Server - хранимая процедура с параметром - PullRequest
0 голосов
/ 11 мая 2010

Пожалуйста, первый TSQL работает FINE, второй - нет. Я предполагаю, что это должно быть простой ошибкой, так как я не привык к T-SQL. Спасибо за ответы. R Conte.

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

Ответы [ 3 ]

0 голосов
/ 11 мая 2010

Хорошо, для второй попытки я продолжил и создал таблицу и хранимую процедуру в своем локальном БД!

Ваш код работает безупречно, как вы можете видеть на моем скриншоте. Вы делаете что-то глупое, например, случайно запускаете неправильную хранимую процедуру или, возможно, запускаете ее в неправильной базе данных (это случается со всеми - не расстраивайтесь!) *

А может я что-то не так делаю? Но я составил таблицу, как я себе представляю, и использовал вашу точную хранимую процедуру. Работало нормально с параметром dis и без него. Надеюсь, это поможет!

Возможно, вам придется начать с нуля новую базу данных в новом сеансе только для проверки работоспособности

Нажмите здесь для просмотра в полном размере

alt text

0 голосов
/ 06 июля 2010

Когда он запрашивает параметры в диалоговом окне VS, просто поместите строку в столбец «Значение», не помещайте ее в кавычки или с символом N перед ней.

т.е. dis а не N'dis'

Visual Studio автоматически помещает строки в правильном формате, когда вы выбираете «Выполнить хранимую процедуру ...» в меню правой кнопки мыши.

0 голосов
/ 11 мая 2010

Попробуйте

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

или просто

spPesquisasPorStatus N'dis'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...