86 messaggi dal 22 agosto 2001
Ciao a tutti, sollevo un problemino sulle stored procedure di MS SQL Server 7.0 che mi sta facendo amichevolmente impazzire.

Il codice che segue illusra quella che dovrebbe essere in linea di massima il risultato che vorrei.
In pratica vorrei eseguire una query EXEC(@SQL) dove la SQL è creata al volo in conseguenza di altre condizioni. Il problema è che sono sempre costreto (in questo caso) a creare la stringa sql da eseguire. Ma il FECTH (o il cursore che è meglio) non posso farlo su EXEC o simili.

Quindi... io vorrei poter eseguire il FETCH di un CURSORE che è stato creato per (FOR) una SQL da stringa.

DECLARE @SQL varchar(1000)
DECLARE @IDS varchar(100)
DECLARE@OUT varchar(100)
SET @IDS = '1, 2, 3, 4, 5'
SET @SQL = 'SELECT CAMPO FROM TABELLA WHERE CAMPO IN (' + @IDS + ')'

DECLARE cursore CURSOR FOR
EXEC(@SQL) <!-- QUI E' DOVE NON VA
OPEN cursore
FETCH NEXT FROM cursore INTO @OUT
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'RESULT : ' + @OUT
FETCH NEXT FROM cursore INTO @OUT
END

CLOSE cursore
DEALLOCATE cursore


Qui di seguito mostro invece una soluzione funzionanate, ma che non mi serve perché non risponde alle mie esigenze ;)

DECLARE@OUT varchar(100)

DECLARE cursore CURSOR FOR
SELECT CAMPO FROM TABELLA WHERE CAMPO IN '1, 2, 3, 4, 5'
OPEN cursore
FETCH NEXT FROM cursore INTO @OUT
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'RESULT : ' + @OUT
FETCH NEXT FROM cursore INTO @OUT
END

CLOSE cursore
DEALLOCATE cursore

Grazie a tutti, anche se forse non sono stato molto chiaro :|

Rossetti Carlo
http://www.folklore.it


"Nulla è impossibile per colui che non deve farlo"

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.