Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1366 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [procedure stockee] - Dupliquer une table et son contenu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[procedure stockee] - Dupliquer une table et son contenu

n°1281298
captus
Posté le 11-01-2006 à 13:45:23  profilanswer
 

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 !  
 

Code :
  1. CREATE PROCEDURE [dbo].[NEWTABLE]
  2. AS
  3. CREATE TABLE TEST445
  4. (
  5. Id int PRIMARY KEY IDENTITY(1,1),
  6. ReferenceEmape nvarchar(255) NULL,
  7. Designation nvarchar(255) NULL,
  8. Type nvarchar(255) NULL,
  9. MarqueComp nvarchar(255) NULL,
  10. ModeleComp nvarchar(255) NULL,
  11. PrixHT money,
  12. Favoris Bit
  13. )
  14. SELECT ReferenceEmape, Designation, Type, MarqueComp, ModeleComp, PrixHT, Favoris FROM Articles
  15. INSERT INTO TEST445 (ReferenceEmape, Designation, Type, MarqueComp, ModeleComp, PrixHT, Favoris)
  16. VALUES ('@RefEMAPE', '@Designation', '@Type','@Marque','@Modele','@PrixHT', 0)
  17. GO


mood
Publicité
Posté le 11-01-2006 à 13:45:23  profilanswer
 

n°1281304
captus
Posté le 11-01-2006 à 13:50:36  profilanswer
 

Ah, j'oubliais
SGBD = Sql Serveur
Si ca peut aider ....

n°1281362
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 14:50:17  profilanswer
 

select lenomdeschamps into lanouvelletable from latableacopier

n°1281365
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 14:51:11  profilanswer
 

ze bèteur fort iou hize :
 
select *
into test445
from articles

n°1281396
captus
Posté le 11-01-2006 à 15:19:10  profilanswer
 

Bas mince alors, 20 ligne en 3 c'est vraiment de la balle
 
Merci arjuna

n°1281413
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 15:35:23  profilanswer
 

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 :pt1cable:)


Message édité par Arjuna le 11-01-2006 à 15:35:59
n°1281454
captus
Posté le 11-01-2006 à 16:18:22  profilanswer
 

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.
 

n°1281460
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 16:24:56  profilanswer
 

esaces entre les mots et les " ' "
 
sinon ça fait INTOtrucmucheFROM

n°1281464
captus
Posté le 11-01-2006 à 16:29:36  profilanswer
 

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.

n°1281468
Elmoricq
Modérateur
Posté le 11-01-2006 à 16:31:53  profilanswer
 

Et si tu précises un type à ta variable, lors de sa déclaration ?


Message édité par Elmoricq le 11-01-2006 à 16:32:09
mood
Publicité
Posté le 11-01-2006 à 16:31:53  profilanswer
 

n°1281477
captus
Posté le 11-01-2006 à 16:36:45  profilanswer
 

effectivement je n'est plus qu'une erreur
Ligne 6 : syntaxe incorrecte vers 'SELECT * INTO '.

n°1281501
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 16:48:48  profilanswer
 

fait un "print" de la commande

n°1281506
captus
Posté le 11-01-2006 à 16:50:48  profilanswer
 

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

n°1281509
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 16:53:24  profilanswer
 

nan, remplace "exec" par "print" et poste ce que ça donne ;)

n°1281513
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 16:54:30  profilanswer
 

arf, je crois que je sais !
 
declare @sqlstatement varchar
select @sqlstatement = 'SELECT * INTO ' + @NOMTABLE + ' FROM Articles'
 
exec @sqlstatement

n°1281516
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 16:55:09  profilanswer
 

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


Message édité par Arjuna le 11-01-2006 à 16:57:58
n°1281521
captus
Posté le 11-01-2006 à 17:00:21  profilanswer
 

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 ?

n°1281524
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 17:05:08  profilanswer
 

déjà, essaie en passant par une variable temporaire.
 
sinon :
 
exec ('SELECT * INTO ' + @NOMTABLE + ' FROM Articles')
 
pourrait éventuellement peut-être fonctionner

n°1281541
captus
Posté le 11-01-2006 à 17:13:48  profilanswer
 

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  

n°1281663
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2006 à 19:59:19  profilanswer
 

"count" c'est visiblement pas dans cette partie que ça déconne alors...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [procedure stockee] - Dupliquer une table et son contenu

 

Sujets relatifs
Generer le contenu d'un jar dans le fichier MANIFEST.MFselect * from table where nom = ' "+string+"' n marche pas en datagrid
Autorisations sur table SQL SERVER 2000SQl Server 2000 / VB.Net dans être propriétaire pas d'accès à la table
Comment permettre la mise à jour d'une table d'un site webxhtml 1.1: pas de <form> dans <table> ?
"Create table" Erreur de syntaxe ou violation d'accès[VBA-Access (2002)] [Résolu] Requête VBA sur une table jointe
[MySQL] Trouver le nom de la clé primaire d'une table.Table des privilèges effacée sous Mysql
Plus de sujets relatifs à : [procedure stockee] - Dupliquer une table et son contenu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR