88 messaggi dal 19 ottobre 2012
Ciao a tutti,
ho due problemi:
ho un job che prende i parametri da una SP che ha i parametri in una tabella. Tra i vari parametri c'è un campo di tipo nvarchar. Devo inserire nella SP il controllo che il dato sia un numero inserito come parametro sia intero e non con la virgola. In questo caso la SP genera la parametrizzazione ma con un messaggio di warning

Il secondo problema invece è che se il valore non è inserito il parametro non viene passato.

Potete aiutarmi? E' tutto il giorno che ci sto sbattendo la testa ma non riesco.

Grazie mille in anticipo
244 messaggi dal 22 gennaio 2017
Contributi
Per il primo problema, puoi farti aiutare da una function:
http://www.tek-tips.com/faqs.cfm?fid=6423

Il secondo problema invece, non puoi utilizzare un valore di default per risolverlo? Impostando e gestendo un valore NULL in caso di assenza parametro?
88 messaggi dal 19 ottobre 2012
Grazie Andrea per le risposte. Ora guardo il link che mi hai passato. Per il secondo suggerimento non avevo pensato al valore di default.
Dopo provo e nel caso scrivo nuovamente.
Grazie ancora
88 messaggi dal 19 ottobre 2012
Ciao Andrea,
ho provato a fare il controllo ma non riesco. Questo è quanto ho scritto:


IF @LockTimeout LIKE CONVERT (int, @LockTimeout)
BEGIN
SET @ErrorMessage = 'Il valore inserito non è corretto' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,10,1) WITH NOWAIT
RETURN
END

In pratica dovrebbe uscire il messaggio di errore se nel parametro inserisco ad esempio un valore decimale
Grazie

G.
244 messaggi dal 22 gennaio 2017
Contributi
La mia idea è questa:
Utilizzare la seguente funzione:
CREATE Function dbo.IsInteger(@Value VarChar(18))
Returns Bit
As 
Begin
  
  Return IsNull(
     (Select Case When CharIndex('.', @Value) > 0 
                  Then Case When Convert(int, ParseName(@Value, 1)) <> 0
                            Then 0
                            Else 1
                            End
                  Else 1
                  End
      Where IsNumeric(@Value + 'e0') = 1), 0)

End


Utilizzandola come segue:
IF dbo.IsInteger(@LockTimeout)
BEGIN
SET @ErrorMessage = 'Il valore inserito non è corretto' + CHAR(13) + CHAR(10) + ' '
RAISERROR(@ErrorMessage,10,1) WITH NOWAIT
RETURN
END

Modificato da andrea.tosato86 il 29 agosto 2017 14.20 -
66 messaggi dal 09 febbraio 2005
eusebio1006 ha scritto:
Ciao a tutti,
....
Tra i vari parametri c'è un campo di tipo nvarchar. Devo inserire nella SP il controllo che il dato sia un numero inserito come parametro sia intero e non con la virgola
...


ciao,
per la verifica sul tipo di dato puoi usare patindex che ha un limitato supporto alle RegExp.

declare @test varchar(10)

set @test='123,4'
select @test, patindex('%[^0-9]%',@test)

set @test='1234'
select @test, patindex('%[^0-9]%',@test)
88 messaggi dal 19 ottobre 2012
Ciao e scusa il ritardo per la risposta. Avevo trovato qualcosa di simile e avevo già provveduto.
Grazie mille

Giorgio
88 messaggi dal 19 ottobre 2012
Grazie mille del suggerimento e sscusa del ritardo della risposta.
E' quello che mi serviva

Giorgio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.