IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Ordonner l'exécution d'un script dans un curseur


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    dba
    Inscrit en
    Décembre 2016
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : dba
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 119
    Par défaut Ordonner l'exécution d'un script dans un curseur
    bonjour

    j'utilise ce curseur pour appliquer une opération du truncate table sur des Multi tables

    sauf que je veux ordonner l'opération du truncate selon un ordre bien définit

    truncate table1 puis truncate table2

    Qui a une idée comment je peut ordonner l’exécution dans mon curseur selon mon besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    DECLARE @Table_Name VARCHAR(50)
    DECLARE @Query VARCHAR(250)
    DECLARE Table_Cursor CURSOR FOR SELECT Name FROM sys.tables where name like 'integration%_bulk';
    DECLARE @Affected_Rows INTEGER = 0 
    DECLARE @message nvarchar(max)
     
    OPEN Table_Cursor
    FETCH NEXT FROM Table_Cursor INTO @Table_Name
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @Query =   'truncate table  '+@Table_Name+ char(8) 
    	set @message = 'truncate table  '+@Table_Name+ char(8) 
    raiserror(@message,10,1) with nowait;
     
      exec  (@Query)
        SET @Affected_Rows = @Affected_Rows + COALESCE(@@ROWCOUNT, 0)
        FETCH NEXT FROM Table_Cursor INTO @Table_Name
    END
    SELECT @Affected_Rows AS Affected_Rows
     
    CLOSE  Table_Cursor
    DEALLOCATE Table_Cursor
    merci pour vos aides

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,

    Tu peux utiliser un order by dans ton curseur.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE Table_Cursor CURSOR FOR SELECT Name FROM sys.tables where name like 'integration%_bulk' 
    order by case name when 'truc'  then 1
    when 'bidule' then 2
    else 0
    end;
    Cordialement
    Soazig

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Beaucoup plus simples et plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE @SQL NVARCHAR(max) = N'';
    SELECT @SQL = @SQL + N'TRUNCATE [' + s.name + '].[' + t.name + '];'
    FROM   sys.tables AS t
           JOIN sys.schemas AS s ON t.schema_id = s.schema_id
    WHERE  t.name like 'integration%_bulk';
    EXEC (@SQL);
    Sans passer par un curseur !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    La question que je me pose est pourquoi vouloir faire un truncate de la table A avant la B ? De toute façon s'il y a une foreign key dans les deux cas ça plantera.
    Cordialement
    Soazig

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par soazig Voir le message
    La question que je me pose est pourquoi vouloir faire un truncate de la table A avant la B ? De toute façon s'il y a une foreign key dans les deux cas ça plantera.
    Bon point !

Discussions similaires

  1. [Python 3.X] Débutant. Impossible d'exécuter le moindre script dans le shell
    Par ccarcel dans le forum Général Python
    Réponses: 6
    Dernier message: 13/10/2017, 11h52
  2. Exécution de java script dans une page HTML
    Par big1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/07/2015, 18h19
  3. Réponses: 10
    Dernier message: 18/06/2012, 18h51
  4. [Batch] Script pour exécuter un autre script dans une arborescence de repertoires.
    Par jano_dave dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 02/07/2009, 14h43
  5. [AJAX] Exécution de scripts dans la réponse d'un XHR
    Par moomarama dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/07/2007, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo