Пожалуйста, обратите внимание на следующем хранимой процедуры:Не могли бы вы рассказать мне, почему мой сохраненный proc не показывает никаких сообщений?
ALTER PROCEDURE [dbo].[SP_GetList]
@fname nvarchar(50),
@lname nvarchar(50),
@dob nvarchar(50),
@txtGroup varchar(50),
@Msg VARCHAR(1000) OUT
AS
SET NOCOUNT ON;
-- added to prevent extra result sets from interfering with SELECT statements.
IF exists(SELECT 'AKRON' AS CodeName, a.voter_id AS voter_id_vre, a.cnty_Group, a.district_combo, a.voter_fname, a.voter_mname, a.voter_lname, a.voter_suffix, COALESCE(a.str_number,'')+' '+COALESCE(a.str_name,'')+' '+COALESCE(a.str_suffix,'')+' '+COALESCE(a.str_apt,'') AS res_addr,
a.str_city, 'OH' AS str_state, a.str_zip, COALESCE(a.mail_str_num,'')+' '+COALESCE(a.mail_str_name,'')+' '+COALESCE(a.mail_srt_suff,'')+' '+COALESCE(a.mail_apt,'')+' '+COALESCE(a.mail_city,'')+' '+COALESCE(a.mail_state,'')+' '+COALESCE(a.mail_zip,'') AS mail_address, a.dob, (SELECT COUNT(*) FROM dbo.voter_record_supp WHERE dbo.voter_record_supp.voter_ID = a.voter_ID) AS [exists], b.* FROM dbo.voter_record a LEFT OUTER JOIN dbo.voter_record_supp b ON a.voter_id=b.voter_id
WHERE a.voter_fname Like '%fname%' And a.voter_lname Like '%@lname%' And a.dob = @dob
AND voter_status IN ('A','I') AND cnty_Group NOT LIKE 'ML%' AND cnty_Group NOT LIKE 'PA%' AND cnty_Group NOT LIKE 'MP%' AND cnty_Group NOT LIKE 'CH%' AND cnty_Group NOT LIKE 'SC%' AND cnty_Group NOT LIKE 'CP%')
BEGIN
SET @Msg = Participants in Group' + @txtGroup + 'are not eligible to participate in this event'
SELECT @Msg AS 'User'
RETURN
END
Когда я попытался выполнить вышеуказанную хранимую процедуру с помощью следующего кода ниже, он всегда возвращает значение NULL.
DECLARE @Msg varchar(1000)
EXEC [dbo].[SP_GetList]
@fname = N'Jenny',
@lname = N'Craig',
@dob = N'04/02/1956',
@txtGroup = N'DD06A',
@Msg = @Msg OUTPUT
SELECT @Msg as N'@Msg'
GO
Мы ожидаем, что либо увидеть followng сообщение:
Участники группы DD06A
не имеют права принимать участие в этом мероприятии
или пользователь, который имеет право участвовать.
Любые идеи, что я делаю неправильно?
Заранее спасибо
Side Примечание: вы должны ** ** не использовать 'sp_' префикс для хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –
Спасибо за этот кусок советов @marc_s. Я сделаю это изменение, как отмечалось позже, как только я смогу правильно работать над этим материалом. – Kenny
Невозможно скомпилировать команду 'SET'. Не могли бы вы исправить опечатку и убедиться, что представленный код является точным? --thnx – RBarryYoung