- Dupliquer une table et son contenu [procedure stockee] - SQL/NoSQL - Programmation
Marsh Posté le 11-01-2006 à 14:50:17
select lenomdeschamps into lanouvelletable from latableacopier
Marsh Posté le 11-01-2006 à 14:51:11
ze bèteur fort iou hize :
select *
into test445
from articles
Marsh Posté le 11-01-2006 à 15:19:10
Bas mince alors, 20 ligne en 3 c'est vraiment de la balle
Merci arjuna
Marsh Posté le 11-01-2006 à 15:35:23
de rien
avec la plupart des autres SGBD ce serait :
create table destination
as
select * from source
mais SQL Server ne supporte pas cette syntaxe
(par contre, pour la plupart des autres SGBD, le "INTO" permet l'affectation du résultat du select dans des variables de script )
Marsh Posté le 11-01-2006 à 16:18:22
Un grand merci arjuna
Derniere question. La requete
SELECT * INTO TEST FROM Articles
marche parfaitement toute seule, mais j'ai besoin d'avoir le nom de la table 'TEST dans l'exemple' different a chaque lancement de la procedure.
Avec la variable @IdGrille je doit recuperer le champ 'Nom' de la table 'GrilleTarifaire' qui va me donner le nom de la nouvelle table a creer
Pour l'instant j'ai :
CREATE PROCEDURE [dbo].[TTT] (@IdGrille int)
AS
DECLARE @NOMTABLE
SELECT @NOMTABLE = Nom FROM GrilleTarifaire WHERE Id=@IdGrille
execute 'SELECT * INTO' + @NOMTABLE + 'FROM Articles'
GO
Mais il y a des problemes de syntaxe.
Peux tu y jettes un oeuil stp.
Marsh Posté le 11-01-2006 à 16:24:56
esaces entre les mots et les " ' "
sinon ça fait INTOtrucmucheFROM
Marsh Posté le 11-01-2006 à 16:29:36
Ok, pour ca mais ...
CREATE PROCEDURE [dbo].[TTT] (@IdGrille int)
AS
DECLARE @NOMTABLE
SELECT @NOMTABLE = Nom FROM GrilleTarifaire WHERE Id=@IdGrille
execute 'SELECT * INTO ' + @NOMTABLE + ' FROM Articles'
GO
Mais j'ai encore des erreur:
Syntaxe incorrecte vers le mot clé 'SELECT'.
La variable '@NOMTABLE' doit être déclarée.
Marsh Posté le 11-01-2006 à 16:31:53
Et si tu précises un type à ta variable, lors de sa déclaration ?
Marsh Posté le 11-01-2006 à 16:36:45
effectivement je n'est plus qu'une erreur
Ligne 6 : syntaxe incorrecte vers 'SELECT * INTO '.
Marsh Posté le 11-01-2006 à 16:50:48
CREATE PROCEDURE [dbo].[TTT] (@IdGrille int)
AS
DECLARE @NOMTABLE varchar
SELECT @NOMTABLE = Nom FROM GrilleTarifaire WHERE Id=@IdGrille
exec 'SELECT * INTO ' + @NOMTABLE + ' FROM Articles'
GO
Marsh Posté le 11-01-2006 à 16:53:24
nan, remplace "exec" par "print" et poste ce que ça donne
Marsh Posté le 11-01-2006 à 16:54:30
arf, je crois que je sais !
declare @sqlstatement varchar
select @sqlstatement = 'SELECT * INTO ' + @NOMTABLE + ' FROM Articles'
exec @sqlstatement
Marsh Posté le 11-01-2006 à 16:55:09
si ça marche pas, poste ce que contient @sqlstatement et vérifie que exec prends bien un varchar dans la doc
tu peux essayer aussi :
exec ('select ... ' ... ' ...')
entre ()
en effet, il prends peut-être ton "+" comme un second paramètre, SQL Server n'est pas très fort pour interpréter les instructions à l'appel d'une fonction
Marsh Posté le 11-01-2006 à 17:00:21
print a la place de exec marche dans la syntaxte.
MAIS,
dans ton dernier post, n'oublie pas qu'il me faut la variable @NOMTABLE de precedent SELECT. A moins que l'on puisse les mettre a la suite ?
Marsh Posté le 11-01-2006 à 17:05:08
déjà, essaie en passant par une variable temporaire.
sinon :
exec ('SELECT * INTO ' + @NOMTABLE + ' FROM Articles')
pourrait éventuellement peut-être fonctionner
Marsh Posté le 11-01-2006 à 17:13:48
Deja essayer avec les parantheses. MArche pas.
En fait l'analyseur de requete SQL me dis OK, mais quand je passe la variable @IdGrille via ASP ca me balance
ExecuteSQL Error. [Microsoft][ODBC SQL Server Driver]Champ COUNT incorrect ou erreur de syntaxe
Marsh Posté le 11-01-2006 à 19:59:19
"count" c'est visiblement pas dans cette partie que ça déconne alors...
Marsh Posté le 11-01-2006 à 13:45:23
Bonjour,
Dans une procedure stockee, apres la creation d'une table 'TEST445' je souhaite copier tous les enregistrement (env 300) de la table 'Articles' qui a la meme structure.
Le code suivant est incomplet, je pense qu'il faut une boucle, mais je suis perdu ... A l'aide !