2016-06-30 4 views
1

Ниже приведена следующая хранимая процедура. Когда я пытаюсь выполнить хранимую процедуру с помощью этого кода;Выполнение хранимой процедуры с параметрами SQL Server 2005

Exec [транспорт]. [DBO]. [Delivery_Manifest_email] @RunNo = '3'

Я получаю следующую ошибку

Msg 8146, уровень 16, состояние 2, процедура Delivery_Manifest_email, Line 0
Процедура Delivery_Manifest_email не содержит параметров и аргументов.

Я пытаюсь передать параметр @RunNo, и я не вижу, почему мой синтаксис неверен. Хранимая процедура выполняется отлично, когда я вручную устанавливаю параметр @RunNo в самой хранимой процедуре. Хотя я не хочу этого делать. SQL Server 2005 г.

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[Delivery_Manifest] 
AS 
    DECLARE @tableHTML NVARCHAR(MAX); 
    DECLARE @HTMLBody NVARCHAR(MAX) 
    DECLARE @XML NVARCHAR(MAX) 
    DECLARE @s NVARCHAR(MAX) 
    DECLARE @Driver NVARCHAR(MAX) 
    DECLARE @Lorry NVARCHAR(MAX) 
    DECLARE @recip NVARCHAR(MAX) 
    DECLARE @varCheck BIT 
    DECLARE @DueDate VARCHAR(10) 
    DECLARE @RunNo NVARCHAR(MAX) 

    SET @DueDate = '27/06/2016' 
    SET @Driver = 'Test 
    SET @Lorry ='Test' 
    SET @s = 'Delivery Manifest for: ' +CONVERT(VARCHAR(12),GETDATE(),107) +', Run number '[email protected] + ', ' [email protected] +', ' [email protected] 

    SET @recip = '[email protected]' 

    IF EXISTS (SELECT [OrderNoOnManifest], [Lorry], [Driver], [Name], [Town], [POSTCODE], [Telephone], [DELIVERY NOTE], [Notes], [Shipping Weight (Kg)], [PackagingLength], [District], [ServiceLevel], [SpecificDelTime] FROM [Transport].[dbo].[DELIVERY_MANIFEST_MASTER] WHERE [Due Date] = @DueDate and [Run No] = @RunNo) 

     SET @tableHTML = '<style type="text/css"> 
     table.tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;} 
table.tftable th {font-size:12px;color:#ffffff;background-color:#ff1a00;border-width: 1px;padding: 8px;border-style: solid;border-color: #9dcc7a;text-align:left;} 
table.tftable tr {background-color:#ffffff;} 
table.tftable td {font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #9dcc7a;} 
</style> 
    <body> 
    ' 
+ @s +'<p style="text-align:left;"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;text-decoration:none;text-transform:none;color:000033;"> </span> 
</p> 
<br> 
<table class="tftable" border="2">'   
    + N'<th>Order</th>' 
     + N'<th>Customer</th>' 
      + N'<th>Town</th>' 
+ N'<th>Postcode</th>' 
    + N'<th>Tel. No.</th>' 
    + N'<th>Order No</th>' 
      + N'<th>Notes</th>' 
    + N'<th>Weight (Kg)</th>' 
    + N'<th>Dimension</th>' 
      + N'<th>Instructions</th>' 
    + N'<th>Service Level</th>' 
    + N'<th>Delivery Time By</th></tr>' 
    + CAST (( SELECT 
        td = [OrderNoOnManifest], '' 
          , td = [Name] , '' 
          , td = [Town], '' 
           , td = [POSTCODE] ,'' 
           , td = [Telephone],'' 
            , td = [DELIVERY NOTE],'' 
            , td = [Notes],'' 
            , td = [Shipping Weight (Kg)],'' 
            , td = [PackagingLength],'' 
            , td = isnull([District],'None'),'' 
            , td = isnull([ServiceLevel],0),'' 
             ,td = isnull([SpecificDelTime],0),'' 
FROM   [Transport].[dbo].[DELIVERY_MANIFEST_MASTER] 
WHERE [Due Date] = @DueDate and [Run No] = @RunNo 
ORDER BY [OrderNoOnManifest] asc 
                FOR 
                XML PATH('tr') 
                 , TYPE 
                ) AS NVARCHAR(MAX)) + N'</table>' 

+'<br>' 
+'<br>' 
+ '<p style="text-align:left;"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:bold;text-decoration:none;text-transform:none;color:000033;">TEST DELIVERY MANIFEST EMAIL</span> 

' 
BEGIN 

    EXEC msdb.dbo.sp_send_dbmail 
    @blind_copy_recipients = @recip, 
    @profile_name = 'Test', 
    @subject = @s, 
     @body = @tableHTML, 
     @body_format = 'HTML' ; 

END 

ответ

3

У вас нет параметров, определенных для хранимой процедуры. Вы должны определить их как таковые:

... 
CREATE PROCEDURE [dbo].[Delivery_Manifest] (@RunNo NVARCHAR(MAX)) 
AS 
... 
+0

Это решило его, спасибо! – Andy

Смежные вопросы