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
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
GO, n'est pas une instruction SQL, mais juste un séparateur dans un batch.
Hum... meilleur résultat ??? Qu'est ce que tu veux dire par là ?Envoyé par Sytchev3
Un peu comme les BEGIN ... END non ?
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
Je ne vois pas très bien où tu veux aller. C'est quoi ton problème exactement ?
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...![]()
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
Ma base de données est une base de données SQL Server 2000
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
Et si tu les supprimes tout simplement ??
je pense avoir trouvé d'où venait mon problème dans une instruction je ne lui spécificiait pas dbo.nomdelatableEn le supprimant ou en le remplaçant par des points virgules, j'ai tout de même des erreurs
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 +
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/ * * * * *
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.
Partager