SQL Server 2005连接XML结果并保存到文件

时间:2017-09-25 15:01:56

标签: sql-server xml sql-server-2005 concatenation

我这段代码向我展示了我获取的每个客户的单独结果。我正在寻找一种方法来连接结果,并使用其他bloc xml结果重新开始一个结果。

然后我需要将其保存在txt或xml文件中。你能告诉我使用哪个命令吗?特别是我需要将结果插入一个唯一的变量,如@DTE,然后添加一些打开和关闭代码,然后将此变量保存到文件中。

检索结果时我也遇到了问题。当我向网格显示结果时,sql告诉我,我的结果太多而不是100,并且不让我看到所有结果。

如果我显示为文本,似乎我的代码被截断为每个圆圈。在一些角色之后没有显示太多。我怎样才能超越这个限制?

DECLARE @anno NVARCHAR(MAX);
DECLARE @Cliente NVARCHAR(MAX);
DECLARE @CodiceCliente NVARCHAR(MAX);
DECLARE @Fornitore NVARCHAR(MAX);
DECLARE @CodiceFornitore NVARCHAR(MAX);
DECLARE @datada NVARCHAR(MAX);
DECLARE @dataa NVARCHAR(MAX);
DECLARE @AZIENDA NVARCHAR(MAX);
DECLARE @PIVA NVARCHAR(MAX);
DECLARE @INDIRIZZO NVARCHAR(MAX);
DECLARE @NOME NVARCHAR(MAX);
DECLARE @COGNOME NVARCHAR(MAX);
DECLARE @CAP NVARCHAR(MAX);
DECLARE @COMUNE NVARCHAR(MAX);
DECLARE @PROVINCIA NVARCHAR(MAX);
DECLARE @NAZIONE NVARCHAR(MAX);
DECLARE @CODFISC NVARCHAR(MAX);
DECLARE @DTE NVARCHAR(4000);
DECLARE @SQL NVARCHAR(4000);
SET @DTE = '';
-------INFO DITTA------
SET @AZIENDA = 'XXXXX';
SET @PIVA = 'XXXXXX';
SET @CODFISC = 'XXXX';
SET @INDIRIZZO ='XXXXX';
SET @NOME = 'XXXXX';
SET @COGNOME = 'XXXXX';
SET @CAP = 'XXXXX';
SET @COMUNE = 'XXXXXX';
SET @PROVINCIA = 'XX';
SET @NAZIONE = 'XX';
-------------IMPOSTA INTERVALLO DATE-----
SET @datada =  '2017-01-01 00:00:00.000' --- DATEADD(DAY, -150, GETDATE());
SET @dataa = '2017-07-01 00:00:00.000' ---GETDATE();
---- TROVA CLIENTI ---
DECLARE c CURSOR FOR
SELECT DISTINCT
   CODCONTO,
   DSCCONTO1
   --TESTEDOCUMENTI.NUMERODOC
FROM XXXX.dbo.TESTEDOCUMENTI 
INNER JOIN XXXX.dbo.ANAGRAFICACF
ON CODCLIFOR=CODCONTO
INNER JOIN XXXX.dbo.RIGHEDOCUMENTI
ON PROGRESSIVO=IDTESTA AND TOTNETTORIGA <>'0'
LEFT JOIN XXXX.dbo.ANAGRAFICAAGENTI
ON CODAGENTE=CODAGENTE1
LEFT JOIN  XXXX.dbo.TABPAGAMENTI
ON CODPAGAMENTO = CODICE
WHERE  XXXX.dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND XXXX.dbo.TESTEDOCUMENTI.BLOCCATO = '0' AND (XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' OR XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'NDC' OR XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'NAC') AND XXXX.dbo.TESTEDOCUMENTI.DATADOC BETWEEN @datada AND @dataa
GROUP BY DSCCONTO1,CODCONTO
----DICHIARO LE VARIABILI PER CLIENTE

----PRENDI IL PRIMO CLIENTE E METTILO NELLA VARIABILE----
OPEN c
FETCH NEXT FROM c INTO @CodiceCliente,@Cliente
--IF @CodiceCliente IS NULL goto finescript;
WHILE @@FETCH_STATUS = 0
    BEGIN

SET @DTE = @DTE + (SELECT DISTINCT
@NAZIONE AS "CedentePrestatoreDTE/IdentificativiFiscali/IdFiscaleIVA/IdPaese",
@PIVA AS "CedentePrestatoreDTE/IdentificativiFiscali/IdFiscaleIVA/IdCodice",
@CODFISC AS "CedentePrestatoreDTE/IdentificativiFiscali/CodiceFiscale",
@AZIENDA AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Denominazione",
@INDIRIZZO AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Sede/Indirizzo",
@CAP AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Sede/CAP",
@COMUNE AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Sede/Comune",
@PROVINCIA AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Sede/Provincia",
@NAZIONE AS "CedentePrestatoreDTE/AltriDatiIdentificativi/Sede/Nazione",
ANAGRAFICACF.CODICEISO AS "CessionarioCommittenteDTE/IdentificativiFiscali/IdFiscaleIVA/IdPaese", 
ANAGRAFICACF.PARTITAIVA AS "CessionarioCommittenteDTE/IdentificativiFiscali/IdFiscaleIVA/IdCodice",
ANAGRAFICACF.CODFISCALE AS "CessionarioCommittenteDTE/IdentificativiFiscali/CodiceFiscale",
ANAGRAFICACF.DSCCONTO1 AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Denominazione",
ANAGRAFICACF.INDIRIZZO AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Sede/Indirizzo",
ANAGRAFICACF.CAP AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Sede/CAP",
ANAGRAFICACF.LOCALITA AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Sede/Comune",
ANAGRAFICACF.PROVINCIA AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Sede/Provincia",
ANAGRAFICACF.CODICEISO AS "CessionarioCommittenteDTE/AltriDatiIdentificativi/Sede/Nazione",
CASE WHEN TESTEDOCUMENTI.TIPODOC = 'FVC' THEN 'TD01' WHEN TESTEDOCUMENTI.TIPODOC = 'NDC' THEN 'TD05' WHEN TESTEDOCUMENTI.TIPODOC = 'NAC' THEN 'TD04' ELSE NULL END AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiGenerali/TipoDocumento",
REPLACE (CONVERT(VARCHAR(12),TESTEDOCUMENTI.DATADOC,111), '/','-') AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiGenerali/Data",
TESTEDOCUMENTI.NUMERODOC AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiGenerali/Numero",
TOTIMPONIBILE AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/ImponibileImporto",
TOTIMPOSTA AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/DatiIVA/Imposta",
ALIQUOTA AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/DatiIVA/Aliquota",
CODIVA,
CASE WHEN TRATTAMENTOIVA.DESCRIZIONE LIKE '%ART%15%' THEN 'N1' WHEN TRATTAMENTOIVA.DESCRIZIONE LIKE '%N.I.%' THEN 'N3' WHEN TRATTAMENTOIVA.DESCRIZIONE LIKE 'ES%' AND TRATTAMENTOIVA.DESCRIZIONE NOT LIKE 'ESC%' THEN 'N4' WHEN TRATTAMENTOIVA.DESCRIZIONE LIKE '%AUTOFATT%' THEN 'N6' WHEN TRATTAMENTOIVA.DESCRIZIONE LIKE '%40%' OR TRATTAMENTOIVA.DESCRIZIONE LIKE '%41%' OR TRATTAMENTOIVA.DESCRIZIONE LIKE '%74%' THEN 'N7' ELSE '' END AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/Natura",
100-INDETRAIBILITA AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/Detraibile",
'I' AS "CessionarioCommittenteDTE/DatiFatturaBodyDTE/DatiRiepilogo/EsigibilitaIVA",
TESTEDOCUMENTI.DATADOC

          FROM XXXX.dbo.TESTEDOCUMENTI 
INNER JOIN XXXX.dbo.ANAGRAFICACF
ON CODCLIFOR=CODCONTO
LEFT JOIN XXXX.dbo.ANAGRAFICAAGENTI
ON CODAGENTE=CODAGENTE1
LEFT JOIN  XXXX.dbo.TABPAGAMENTI
ON CODPAGAMENTO = CODICE
INNER JOIN XXXX.dbo.RIGHEDOCUMENTI
ON RIGHEDOCUMENTI.NUMERODOC = TESTEDOCUMENTI.NUMERODOC
INNER JOIN XXXX.dbo.TRATTAMENTOIVA
ON TRATTAMENTOIVA.CODICE = RIGHEDOCUMENTI.CODIVA

WHERE  CODCLIFOR = @CodiceCliente AND XXXX.dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND XXXX.dbo.TESTEDOCUMENTI.BLOCCATO = '0' AND (XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' OR XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'NDC' OR XXXX.dbo.TESTEDOCUMENTI.TIPODOC = 'NAC') AND XXXX.dbo.TESTEDOCUMENTI.DATADOC BETWEEN @datada AND @dataa

for xml path(''), elements)

PRINT @DTE;



--PRENDI IL PROSSIMO CLIENTE---
FETCH NEXT FROM c INTO @CodiceCliente,@Cliente
END
--PULISCI---
CLOSE c
DEALLOCATE c

0 个答案:

没有答案