none
Stored Procedure RRS feed

  • Domanda

  • Allora, sto andando al manicomio su una sciocchezza. Ho la mia stored procedure dichiarata in questo modo :

    create procedure dbo.test
    (
      @Inizio SmallDatetime,
      @Fine   SmallDatetime
    )
    As
    ...

    se voglio chiamare questa stored procedure come passo i parametri @inizio e @fine ?
    Ho provato così ma dice che c'è un errore di conversione da varchar a smalldatetime

    exec dbo.test @inizio='2012-04-16 00:00:00', @fine='2012-04-17 00:00:00'

    martedì 17 aprile 2012 15:47

Risposte

  • salve,

    "putroppo" la conversione utilizza comunque le impostazioni locali dell'account in accesso al sistema, e tu probabilmente utilizzi l'impostazione di lingua italiana...

    SET NOCOUNT ON;
    USE tempdb;
    GO
    create procedure dbo.test
    (
      @Inizio SmallDatetime,
      @Fine   SmallDatetime
    )
    As
    	SELECT @Inizio, @Fine;
    GO
    SET LANGUAGE 'italiano';
    GO
    exec dbo.test @inizio='20120416 00:00:00', @fine='20120417 00:00:00'
    exec dbo.test @inizio='2012-04-16 00:00:00', @fine='2012-04-17 00:00:00'
    GO
    SET LANGUAGE 'english';
    GO
    exec dbo.test @inizio='20120416 00:00:00', @fine='20120417 00:00:00'
    exec dbo.test @inizio='2012-04-16 00:00:00', @fine='2012-04-17 00:00:00'
    GO
    DROP PROCEDURE dbo.test;
    --<--------
    L'impostazione della lingua è stata sostituita con Italiano.
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    
    Msg 8114, Level 16, State 1, Procedure test, Line 0
    Errore durante la conversione del tipo di dati da varchar a smalldatetime.
    Changed language setting to us_english.
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    

    con l'impostazione di lingua inglese, invece, riesce a convertire anche "yyyy-MM-dd"

    saluti


    http://www.asql.biz - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    martedì 17 aprile 2012 18:03
    Moderatore

Tutte le risposte

  • salve,

    "putroppo" la conversione utilizza comunque le impostazioni locali dell'account in accesso al sistema, e tu probabilmente utilizzi l'impostazione di lingua italiana...

    SET NOCOUNT ON;
    USE tempdb;
    GO
    create procedure dbo.test
    (
      @Inizio SmallDatetime,
      @Fine   SmallDatetime
    )
    As
    	SELECT @Inizio, @Fine;
    GO
    SET LANGUAGE 'italiano';
    GO
    exec dbo.test @inizio='20120416 00:00:00', @fine='20120417 00:00:00'
    exec dbo.test @inizio='2012-04-16 00:00:00', @fine='2012-04-17 00:00:00'
    GO
    SET LANGUAGE 'english';
    GO
    exec dbo.test @inizio='20120416 00:00:00', @fine='20120417 00:00:00'
    exec dbo.test @inizio='2012-04-16 00:00:00', @fine='2012-04-17 00:00:00'
    GO
    DROP PROCEDURE dbo.test;
    --<--------
    L'impostazione della lingua è stata sostituita con Italiano.
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    
    Msg 8114, Level 16, State 1, Procedure test, Line 0
    Errore durante la conversione del tipo di dati da varchar a smalldatetime.
    Changed language setting to us_english.
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    
                            
    ----------------------- -----------------------
    2012-04-16 00:00:00     2012-04-17 00:00:00
    

    con l'impostazione di lingua inglese, invece, riesce a convertire anche "yyyy-MM-dd"

    saluti


    http://www.asql.biz - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    martedì 17 aprile 2012 18:03
    Moderatore
  • Grazie, funziona !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Ma la lingua la vado a settare nelle impostazioni dell'account di accesso ? ho capito bene ?

    martedì 17 aprile 2012 18:49
  • salve,

    si, e' una "proprieta'" della login, quindi con SSMS selezioni il nodo Security->Logins->loginSpecifica.. proprieta' "default language" ... ma non volevo dire che "devi" cambiarla... devi solo tenerne conto :)

    saluti


    http://www.asql.biz - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    martedì 17 aprile 2012 22:21
    Moderatore