74 messaggi dal 23 maggio 2005
Ciao a tutti!
Ho una stored procedure un pò complessa che già quando provo ad eseguirla in Access mi dà come errore : "devi dichiarare la variabile
@Cerca"
La variabile @Cerca è dichiarata tra i parametri di input come
@Cerca nvarchar(50)
la riga di codice incriminata è:

SET @where ='WHERE NomeProdotto LIKE "%" +@Cerca+ "%" '

io penso che sia un problema di concatenazione di stringhe;
ho provato a suddividere ulteriormente @where ma arrivo sempre ad avere lo stesso tipo di errore.
1.976 messaggi dal 27 luglio 2005
Contributi
salve Daniela62,
Daniela62 ha scritto:
Ciao a tutti!
Ho una stored procedure un pò complessa che già quando provo ad eseguirla in Access mi dà come errore : "devi dichiarare la variabile
@Cerca"
La variabile @Cerca è dichiarata tra i parametri di input come
@Cerca nvarchar(50)
la riga di codice incriminata è:

SET @where ='WHERE NomeProdotto LIKE "%" +@Cerca+ "%" '

io penso che sia un problema di concatenazione di stringhe;
ho provato a suddividere ulteriormente @where ma arrivo sempre ad avere lo stesso tipo di errore.

se parli di probabile problematica di "concatenazione di stringhe" allora e' probabile tu stia eseguendo codice T-SQL dinamico che farai effettivamente eseguire ad una chiamata tipo
EXEC (@cmd)
ovvero
EXECUTE sp_executesql @cmd
dove @cmd contiene il comando da eseguire..
ed in effetti, lo spezzone di codice che utilizzi
SET @where ='WHERE NomeProdotto LIKE "%" +@Cerca+ "%" '
mi fa cosi' pensare...
viene per cui passata la stringa "@Cerca" dentro il testo del filtro @where invece del valore di @Cerca..
hai solo sbagliato la gestione della costruzione della stringa di filtro..
DECLARE @where varchar(128)
DECLARE @Cerca varchar(10)
SET @Cerca = 'Andrea'
SET @where ='WHERE NomeProdotto LIKE ''%' + @Cerca + '%'''
SELECT @where
come vedi in questo esempio, il risultato e' corretto...

tra le altre cose, non puoi utilizzare il doppio apice (") ma devi usare 2 apici semplici ('')
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
74 messaggi dal 23 maggio 2005
Sì, la mia SP è di quel tipo:codice T-SQL ed esecuzione con
EXEC sp_executesql @query
e in effetti era un problema di sintassi sbagliata.
Ho sostituito il doppio apice alle virgolette e funziona.
Grazie mille per avermi illuminato!
Saluti

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.