将查询选择转换为光标

时间:2019-01-16 16:51:22

标签: sql sql-server cursor

我需要在游标中转换我的SQL Server查询。

我尝试了问题Select statement in cursor的示例,但有错误。

这是我的查询:

SELECT DISTINCT
    U.IDSocio, U.IDUtente,
    U.Cognome, U.Nome, U.Sesso,
    U.Luogo_Nascita,
    U.Provincia_Nascita,
    U.Stato_Nascita,
    COALESCE(C.codice, SS.codice) as Nascita_CodCatastale,
    CONVERT(DATE, U.Data_Nascita) AS Data_Nascita_Orig,
    REPLACE(CONVERT(VARCHAR, U.Data_Nascita, 111), '/', '-') as Data_Nascita,
    U.Indirizzo_Via as Residenza_Indirizzo,
    U.Indirizzo_NumeroCivico as Residenza_NumeroCivico,
    U.Indirizzo_Cap as Residenza_Cap,
    U.Indirizzo_Citta as Residenza_Citta,
    U.Indirizzo_Pv as Residenza_Provincia,
    U.CodCatastaleResidenza as Residenza_CodCatastale,
    U.Indirizzo_Stato as Residenza_Stato,
    U.PIVA,
    U.CodiceFiscale,
    U.Documento,
    U.Telefono_1,
    U.Telefono_2,
    U.SMS,
    U.Email,
    U.Note,
    UG.Descrizione as Categoria,
    U.AutorizzaSMS,
    U.AutorizzaEmail,
    U.AutorizzaCartaceo,
    U.CFRicevuta,
    U.CFRicevutaUtente
FROM [dbo].[Utenti] U
LEFT JOIN dbo.UtenteCustom UC on UC.IDUtente = U.IDUtente
LEFT JOIN dbo.UtentiCategorie UG on UG.IDCategoria = UC.IDCategoriaUtente
LEFT JOIN dbo.Comuni C on C.Comune = U.Luogo_Nascita and C.PV = U.Provincia_Nascita
LEFT JOIN dbo.Comuni SS on SS.Comune = U.Stato_Nascita
INNER JOIN dbo.AbbonamentiIscrizione AI ON U.IDUtente = AI.IDUtente
INNER JOIN dbo.AbbonamentiDurata AD ON AI.IDDurata = AD.IDDurata
INNER JOIN dbo.Abbonamenti A ON A.IDAbbonamento = AD.IDAbbonamento
INNER JOIN dbo.AziendeAbbonamenti AA On AA.IDAbbonamentoCategoria = A.IDCategoria
INNER JOIN dbo.TesseramentiAbbonamentiDurata TAD On TAD.IDDurata = AD.IDDurata
WHERE
    COALESCE(AA.IDRicevutaAzienda, 2) = 2
    AND (U.Cognome <> '' AND U.Nome <> '')
    AND CONVERT(DATE, DataInizio) <= CONVERT(DATE, GETDATE())
    AND CONVERT(DATE, DataFine) >= CONVERT(DATE, GETDATE())
    ORDER BY U.IDUtente

能否请您帮我将其转换为光标?我需要使用游标,因为查询的结果有很多行,并且使用它的代码执行起来太慢。

0 个答案:

没有答案