52 votes

Comment exécuter une requête SQL sans afficher les résultats ?

Est-il possible d'exécuter une requête SQL sans afficher les résultats ?

comme

Select * from Table_Name

après l'exécution de cette requête, le résultat ne doit pas s'afficher dans le serveur SQL.

5voto

Cogitator Points 134

Si vous avez besoin que la requête s'exécute mais que vous n'avez pas besoin de l'ensemble des résultats, vous pouvez envelopper la requête dans une instruction EXISTS (ou NOT EXISTS) : IF EXISTS(SELECT * FROM NOM_TABLE...). Vous pouvez également sélectionner INTO #temp, puis supprimer ultérieurement la table temporaire.

3voto

Trevor Best Points 31

Dans mon cas, je testais que les données se comportaient dans toutes les vues, par exemple que les fonctions cast() ne provoquaient pas d'erreurs de conversion, etc., de sorte qu'il n'était pas possible de supprimer les données réelles.

J'ai trouvé le script suivant pour tester toutes les vues de cette manière, le seul problème est lorsqu'il rencontre des vues qui ont des colonnes de texte.

declare csr cursor local for select name from sys.views order by name
declare @viewname sysname
declare @sql nvarchar(max)

open csr
fetch next from csr into @viewname
while @@fetch_status = 0 begin
    --set @sql = 'select top 1 * from ' + @viewname 

    set @sql = 'declare @test nvarchar(max) select @test = checksum(*) from ' + @viewname 

    print @viewname

    exec sp_executesql @sql
    fetch next from csr into @viewname
end
close csr
deallocate csr

2voto

Dennis Traub Points 24186

L'objectif est-il de supprimer toutes les lignes ? Dans ce cas, utilisez un filtre dont l'évaluation est fausse pour chaque ligne :

SELECT * FROM Table_Name WHERE 1 = 2

1voto

Barak Kedem Points 521

Si vous utilisez PostgreSQL, vous pouvez placer votre sélection dans une fonction et utiliser PERFORM Les instructions PERFORM exécutent un paramètre et oublient le résultat.

A PERFORM statement sets FOUND true if it produces (and discards) one or more rows, false if no row is produced.

https://www.postgresql.org/docs/9.1/plpgsql-statements.html#:~:text=A%20PERFORM%20statement%20sets%20FOUND,if%20no%20row%20is%20returned .

0voto

S.E. Points 50

Un autre cas d'utilisation est celui où vous souhaitez simplement lire toutes les lignes du tableau, par exemple pour tester les corruptions. Dans ce cas, vous n'avez pas besoin des données elles-mêmes, mais seulement du fait qu'elles sont lisibles ou non. Cependant, le nom de l'option "Discard results AFTER execution" est un peu déroutant - il me dit que le résultat est récupéré et seulement ensuite jeté. Au contraire, il récupère bien les données mais ne les stocke nulle part (par défaut, les lignes sont placées dans la grille, ou toute autre sortie que vous avez choisie) - les lignes reçues sont éliminées à la volée (et non APRÈS l'exécution).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X