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

MS SQL Server Discussion :

Remplacer l'instruction GO par une instruction SQL


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut Remplacer l'instruction GO par une instruction SQL
    Quelle est l'instruction SQL réalisant la même action que les "GO" que l'on trouve souvent dans les scripts SQL.

    J'ai tenté de les remplacer par des points virgules mais cela ne donne pas de meilleur résultat.

    Merci d'avance

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Et a quoi servent les GO exactement ?

  3. #3
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    GO, n'est pas une instruction SQL, mais juste un séparateur dans un batch.

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut Re: Remplacer l'instruction GO par une instruction SQL
    Citation Envoyé par Sytchev3
    J'ai tenté de les remplacer par des points virgules mais cela ne donne pas de meilleur résultat.
    Hum... meilleur résultat ??? Qu'est ce que tu veux dire par là ?

    Un peu comme les BEGIN ... END non ?

  5. #5
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    GO signale aux utilitaires SQL Server qu'ils doivent envoyer le lot d'instructions Transact-SQL en cours au serveur SQL. Le lot d'instructions en cours se compose de toutes les transactions saisies depuis la dernière commande GO ou depuis le début de la session ou du script approprié s'il s'agit de la première commande GO.

    je n'ai pas de meilleur résultat cela veut dire que j'ai toujours un message d'erreur pour l'execution de ma requête

  6. #6
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Je ne vois pas très bien où tu veux aller. C'est quoi ton problème exactement ?

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    C'est donc l'instruction COMMIT.

    Hum... Tu travailles sur quel SGBD ? Quelle est ta transaction ? Je dois t'avouer que ton problème est mal posé. Quand on parle de résultat meilleur en général, c'est en terme de rapidité et d'optimisation, je me disais aussi...

  8. #8
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Autant pour moi pour l'histoire du résultat j'affiche ma requête vous trouverez peut être d'où vient mon erreur :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    /*
     
       mardi 7 février 2006 17:31:45
     
       Utilisateur : sa
     
       Serveur : SRVCOMPTA
     
       Base de données : Transport
     
       Application : MS SQLEM - Data Tools
     
    */
     
     
     
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_TPEMBALL
    	(
    	EMBALLC char(10) NOT NULL,
    	EMBALLL char(30) NOT NULL,
    	PACHATU decimal(7, 2) NOT NULL,
    	UNITESC char(3) NOT NULL,
    	GESSTOC char(1) NOT NULL,
    	CONSIGC char(1) NOT NULL,
    	RECQTEC char(1) NULL,
    	PVENTEU decimal(7, 2) NOT NULL,
    	FOURNIA char(15) NOT NULL,
    	FOURNII decimal(6, 0) NULL,
    	GESTIOA char(15) NULL,
    	GESTIOI decimal(6, 0) NULL,
    	TRSGSTC char(1) NULL,
    	LONGUEG decimal(5, 2) NULL,
    	LARGEUG decimal(5, 2) NULL,
    	HAUTEUG decimal(5, 2) NULL,
    	POIDS0P decimal(8, 3) NULL,
    	PDSSUPP decimal(8, 3) NULL,
    	VOLSUPV decimal(8, 3) NULL,
    	COLSUPQ decimal(5, 0) NULL,
    	DEVISEC char(3) NOT NULL,
    	CPQUAIU decimal(7, 2) NOT NULL,
    	EMBARDC char(2) NOT NULL,
    	DERMAJC char(10) NULL,
    	DERMAJD datetime NULL,
    	CREATIC char(10) NULL,
    	CREATID datetime NULL
    	)  ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.TPEMBALL)
    	 EXEC('INSERT INTO dbo.Tmp_TPEMBALL (EMBALLC, EMBALLL, PACHATU, UNITESC, GESSTOC, CONSIGC, PVENTEU, FOURNIA, FOURNII, GESTIOA, GESTIOI, TRSGSTC, LONGUEG, LARGEUG, HAUTEUG, POIDS0P, PDSSUPP, VOLSUPV, COLSUPQ, DEVISEC, CPQUAIU, EMBARDC, DERMAJC, DERMAJD, CREATIC, CREATID)
    		SELECT EMBALLC, EMBALLL, PACHATU, UNITESC, GESSTOC, CONSIGC, PVENTEU, FOURNIA, FOURNII, GESTIOA, GESTIOI, TRSGSTC, LONGUEG, LARGEUG, HAUTEUG, POIDS0P, PDSSUPP, VOLSUPV, COLSUPQ, DEVISEC, CPQUAIU, EMBARDC, DERMAJC, DERMAJD, CREATIC, CREATID FROM dbo.TPEMBALL TABLOCKX')
    GO
    DROP TABLE dbo.TPEMBALL
    GO
    EXECUTE sp_rename N'dbo.Tmp_TPEMBALL', N'TPEMBALL', 'OBJECT'
    GO
    UPDATE TPEMBALL SET RECQTEC = 'O'
    GO
    CREATE TABLE dbo.Tmp_TPEMBALL
    	(
    	EMBALLC char(10) NOT NULL,
    	EMBALLL char(30) NOT NULL,
    	PACHATU decimal(7, 2) NOT NULL,
    	UNITESC char(3) NOT NULL,
    	GESSTOC char(1) NOT NULL,
    	CONSIGC char(1) NOT NULL,
    	RECQTEC char(1) NOT NULL,
    	PVENTEU decimal(7, 2) NOT NULL,
    	FOURNIA char(15) NOT NULL,
    	FOURNII decimal(6, 0) NULL,
    	GESTIOA char(15) NULL,
    	GESTIOI decimal(6, 0) NULL,
    	TRSGSTC char(1) NULL,
    	LONGUEG decimal(5, 2) NULL,
    	LARGEUG decimal(5, 2) NULL,
    	HAUTEUG decimal(5, 2) NULL,
    	POIDS0P decimal(8, 3) NULL,
    	PDSSUPP decimal(8, 3) NULL,
    	VOLSUPV decimal(8, 3) NULL,
    	COLSUPQ decimal(5, 0) NULL,
    	DEVISEC char(3) NOT NULL,
    	CPQUAIU decimal(7, 2) NOT NULL,
    	EMBARDC char(2) NOT NULL,
    	DERMAJC char(10) NULL,
    	DERMAJD datetime NULL,
    	CREATIC char(10) NULL,
    	CREATID datetime NULL
    	)  ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.TPEMBALL)
    	 EXEC('INSERT INTO dbo.Tmp_TPEMBALL (EMBALLC, EMBALLL, PACHATU, UNITESC, GESSTOC, CONSIGC, RECQTEC, PVENTEU, FOURNIA, FOURNII, GESTIOA, GESTIOI, TRSGSTC, LONGUEG, LARGEUG, HAUTEUG, POIDS0P, PDSSUPP, VOLSUPV, COLSUPQ, DEVISEC, CPQUAIU, EMBARDC, DERMAJC, DERMAJD, CREATIC, CREATID)
    		SELECT EMBALLC, EMBALLL, PACHATU, UNITESC, GESSTOC, CONSIGC, RECQTEC, PVENTEU, FOURNIA, FOURNII, GESTIOA, GESTIOI, TRSGSTC, LONGUEG, LARGEUG, HAUTEUG, POIDS0P, PDSSUPP, VOLSUPV, COLSUPQ, DEVISEC, CPQUAIU, EMBARDC, DERMAJC, DERMAJD, CREATIC, CREATID FROM dbo.TPEMBALL TABLOCKX')
    GO
    DROP TABLE dbo.TPEMBALL
    GO
    EXECUTE sp_rename N'dbo.Tmp_TPEMBALL', N'TPEMBALL', 'OBJECT'
    GO
    COMMIT

  9. #9
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Ma base de données est une base de données SQL Server 2000

  10. #10
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Mon problème est que l'instruction GO n'étant pas une instruction SQL mais une commande reconnue par les utilitaires osql et isql et l'Analyseur de requêtes SQL. L'execution de scripts avec cette instruction me génère des erreurs donc comment pallier à l'utilisation du GO.

    En le supprimant ou en le remplaçant par des points virgules, j'ai tout de même des erreurs

  11. #11
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Et si tu les supprimes tout simplement ??

  12. #12
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Tu as essayé avec COMMIT ?

  13. #13
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    En le supprimant ou en le remplaçant par des points virgules, j'ai tout de même des erreurs
    je pense avoir trouvé d'où venait mon problème dans une instruction je ne lui spécificiait pas dbo.nomdelatable

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    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 : 21 865
    Points : 53 018
    Points
    53 018
    Billets dans le blog
    6
    Par défaut
    GO n'est pas une instruction SQL !!!

    GO est un mot clef qui s'adresse à :
    - l'analyseur de requête
    - osql
    - isl
    et plus généralement tous les outils client de MS SQL Server.

    Il n'est donc pas compris par MS SQL Server.

    Il est interprêté par ces outils comme le fait que le fichier de commande passé s'arrête à l'endroit du GO et qu'après, c'est un nouveau frichier qui commence.

    Lisez l'article que j'ai écrit à ce sujet...
    http://sqlpro.developpez.com/cours/s...nsactsql/#L2.7

    A +

  15. #15
    Membre habitué Avatar de Sytchev3
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 433
    Points : 137
    Points
    137
    Par défaut
    Je sais que l'instruction GO n'est pas une instruction SQL je l'ai précisé dans un de mes messages précédents

    GO, n'est pas une instruction SQL, mais juste un séparateur dans un batch.

    GO signale aux utilitaires SQL Server qu'ils doivent envoyer le lot d'instructions Transact-SQL en cours au serveur SQL. Le lot d'instructions en cours se compose de toutes les transactions saisies depuis la dernière commande GO ou depuis le début de la session ou du script approprié s'il s'agit de la première commande GO.

Discussions similaires

  1. Passage d'une instruction vb par le biai d'une fonction
    Par vascoambrgifromanger dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/04/2009, 13h15
  2. Réponses: 1
    Dernier message: 04/06/2007, 10h23
  3. Réponses: 3
    Dernier message: 20/11/2006, 12h17
  4. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 15h42
  5. Remplacer Dlookup par une requete SQL
    Par nbouseem dans le forum IHM
    Réponses: 9
    Dernier message: 09/06/2006, 16h45

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