2013-07-01 14 views
7

Ho memorizzato le procedure con gli stessi parametri (nome e data del server). Voglio scrivere una procedura memorizzata ed eseguirli in quel SP (chiamato SP_All).Come chiamare stored procedure (con 2 parametri) in una stored procedure?

CREATE PROCEDURE [dbo].[SP_All] 
AS 
BEGIN 
exec sp_1 @myDate datetime, @ServerName sysname 
exec sp_2 @myDate datetime, @ServerName sysname 
exec sp_3 @myDate datetime, @ServerName sysname 
exec sp_4 @myDate datetime, @ServerName sysname 
END 
Go 

errore: deve dichiarare la variabile scalare "@myDate".

+1

parametri put/@ myDate datetime,/@ ServerName sysname – chetan

+4

Nota a margine: si dovrebbe ** not ** usare il prefisso 'sp_' per le stored procedure. Microsoft ha [riservato tale prefisso per il proprio uso (vedere * Denominazione di stored procedure *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), e corri il rischio di uno scontro di nomi in futuro. [È anche un male per le prestazioni della stored procedure] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). È meglio evitare semplicemente 'sp_' e usare qualcos'altro come prefisso - o nessun prefisso! –

+1

Sebbene la tua domanda sia di base, +1 per aggiungere un esempio di codice completo, il messaggio di errore completo e una spiegazione di cosa dovrebbe fare il codice. Troppe domande mancano almeno di una di queste ... – Heinzi

risposta

6

vedo due questioni qui:

  1. tuo procedura richiede apparentemente due parametri, @myDate e @ServerName, che non si è ancora dichiarato. Fatelo aggiungendo i nomi e i tipi tra il nome della procedura e AS.
  2. Quando si chiama sp_1 a sp_4, non è necessario specificare nuovamente il tipo di dati dei parametri (che è stato preso in considerazione dalla dichiarazione, vedere il punto 1).

    CREATE PROCEDURE [dbo].[SP_All] 
        @myDate datetime, 
        @ServerName sysname 
    AS 
    BEGIN 
        exec sp_1 @myDate, @ServerName 
        exec sp_2 @myDate, @ServerName 
        exec sp_3 @myDate, @ServerName 
        exec sp_4 @myDate, @ServerName 
    END 
    
+0

Dear Heinzi, marc_s e Devart grazie per i commenti. Ora funziona! So che è una domanda di base. Spero di essere un esperto come tutti voi. Grazie mille ancora. – Raha

3

provare questo -

CREATE PROCEDURE [dbo].[SP_All] 

     @myDate DATETIME 
    , @ServerName SYSNAME 

AS BEGIN 

    EXEC dbo.sp_1 @myDate, @ServerName 
    EXEC dbo.sp_2 @myDate, @ServerName 
    EXEC dbo.sp_3 @myDate, @ServerName 
    EXEC dbo.sp_4 @myDate, @ServerName 

END 
1

si sta eseguendo stored procedure nel modo sbagliato

exec sp_1 @myDate datetime, @ServerName sysname 

è completamente sintassi sbagliata.

Quando si deve eseguire una stored procedure con i parametri, prima dichiarare parametri e passarlo ..

declare @myDate datetime 
declare @ServerName sysname 

exec sp_1 @myDate, @ServerName 

Questo è l'approccio giusto ..

+0

Ecco un equivoco. Ho dichiarato tutti i parametri in altri SP e ora ho solo bisogno di eseguirli. Le risposte di Heinzi e Devart 'sono corrette e funzionanti. – Raha

Problemi correlati