Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    23

    [SQL SERVER] Problema su store Procedure

    Buongiorno a tutti, premetto che non sono molto esperto di SQL quindi vi chiedo un po di comprensione.

    Il problema è il seguente.

    Devo inserire in una variabile il risultato di una select con il nome della tabella variabile.

    Ho iniziato con questa procedura

    codice:
    DECLARE @nErrori INT
    SET @nErrori=0
    SET @nErrori= (SELECT COUNT(*) FROM TABELLA)
    Ho poi sostituito la select con un EXEC di una stringa di testo, dove all'interno compongo la stringa sql per verificare che tutto funzioni

    codice:
    DECLARE @SQL NVARCHAR(MAX)
    DECLARE @NomeTabella NVARCHAR(MAX)
    
    SET @NomeTabella = 'Tabella'
    SET @SQL = 'select count(*) from ' + @NomeTabella
    
    exec (@SQL)
    Fino a questo punto tutto ok

    Ora la mia domanda è come faccio a mettere il risultato della count all'interno di @nErrori?

    Ho provato decine di modi ma niente mi da sempre errore.

    Sono a disposizione per eventuali chiarimenti

    Help me

    Buon Anno

    Marco

  2. #2
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    ciao, io ci sono riuscito passando tramite una tabella temporanea.

    codice:
    DECLARE @SQL NVARCHAR(MAX)
    DECLARE @NomeTabella NVARCHAR(MAX)
    DECLARE @nErrori INT
    DECLAre @tempT TABLE
    ( nErrors int)
    
    
    SET @nErrori=0
    SET @NomeTabella = 'Tabella'
    SET @SQL = 'select count(*) from ' + @NomeTabella
    
    INSERT INTO @tempT exec(@SQL)
    
    SET @nErrori = (SELECT nErrors FROM @tempT);

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    2

    Re: [SQL SERVER] Problema su store Procedure

    DECLARE @SQL NVARCHAR(MAX)
    DECLARE @NomeTabella NVARCHAR(MAX)
    DECLARE @nErrori INT
    SET @nErrori=0

    SET @NomeTabella = 'Tabella'
    SET @SQL = 'select @nErrori=count(*) from ' + @NomeTabella

    exec (@SQL)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    23
    X ybla82
    Si anche io per ora uso una tab. di passaggio dati, cercavo un modo più "pulito" per risolvere il problema.

    X soledue
    Per quanto riguarda l'ultimo caso purtroppo non funziona, mi da il seguente errore:

    Ho scordato di scrivere che sto lavorando in Windows Server 2003 con SQL Server 2005 SP3


    codice:
    Messaggio 137, livello 15, stato 1, riga 1
    Must declare the scalar variable "@nErrori".

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    2
    più elegante di così :-)

    DECLARE @SQL NVARCHAR(MAX)
    DECLARE @NomeTabella NVARCHAR(MAX)
    DECLARE @Parms NVARCHAR(500);
    DECLARE @nErroriOut INT

    SET @NomeTabella = 'Tabella';
    SET @Parm = N'@nErrori INT OUTPUT';
    SET @SQL = N'SELECT @nErrori=COUNT(*) FROM ' + @NomeTabella;
    EXECUTE sp_executesql @SQL, @Parm, @nErrori=@nErroriOut OUTPUT;
    SELECT @nErroriOut

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.