Ho già una funzione in SQL Server 2005 come:modificare una funzione di server SQL di accettare nuovo parametro opzionale
ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100) AS
Begin
<Function Body>
End
Voglio modificare questa funzione per accettare Inoltre parametro opzionale @ToDate. Aggiungerò la logica in funzione se @Todate Provided fa poi qualcos'altro continuare con il codice esistente.
ho modificato la funzione come:
ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100) AS
Begin
<Function Body>
End
Adesso posso chiamare la funzione come:
SELECT dbo.fCalculateEstimateDate(647,GETDATE())
ma dà errore sul seguente chiamata:
SELECT dbo.fCalculateEstimateDate(647)
come
Un numero insufficiente di argomenti è stato fornito per la procedura o la funzione dbo.fCalculateEstimateDate.
che secondo la mia comprensione non dovrebbe accadere.
Mi manca qualcosa? Grazie in anticipo.
C'è un modo per mantenere la chiamata SELECT dbo.fCalculateEstimateDate (647) funzionante ?? – MaxRecursion
No. Ogni chiamata alla funzione deve avere lo stesso numero di parametri specificato. È sempre possibile creare una * nuova * funzione con due parametri e girare 'dbo.fCalculateEstimateDate' in una funzione wrapper che aggiunge semplicemente il secondo parametro per chiamare la nuova funzione. –
perché questo differisce dalle procedure memorizzate? Sono abbastanza sicuro di poter saltare il secondo parametro e funzionerebbe! – Peter