Créer une procedure stockée

Créer une procedure stockée - SQL/NoSQL - Programmation

Marsh Posté le 04-04-2006 à 08:57:04    

Bonjour ,
Je voudrai créer une procédure stockée qui crée une table dont le nom de la dite table est un paramètre mais je n'y parviens pas.Pourriez-vous m'aider
 
Voici comment j'ai fais  mais sans succès : en lançant dans Query Analyzer de cette façon :
 EXEC PROCREATE 'table01' j'ai toujours un message d'erreur disant que l'objet @param est déjà dans la table.
 
CREATE PROCEDURE [dbo].[PROCREATE]  @param char(15)  AS
CREATE TABLE [dbo].[@param] (
 [CODMAG] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [CODART] [nvarchar] (20) COLLATE French_CI_AS NOT NULL ,
 [LIBELLE] [nvarchar] (50) COLLATE French_CI_AS NULL ,
 [libeltech] [nvarchar] (50) COLLATE French_CI_AS NULL ,
 [groupe] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [UNITE] [nvarchar] (5) COLLATE French_CI_AS NULL ,
 [QUANTITE] [real] NULL ,
 [SEUILmag] [real] NULL ,
 [PRIX_VENTE] [real] NULL ,
 [PRIX_DOLLAR] [real] NULL ,
 [prix_unitaire_dollar] [real] NULL ,
 [pa_fc] [real] NULL ,
 [LMH] [real] NULL ,
 [LMB] [real] NULL ,
 [encours] [real] NULL ,
 [code loca] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [shelf] [nvarchar] (30) COLLATE French_CI_AS NULL ,
 [aprix_unitaire_dollar] [real] NULL ,
 [compte charge] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [image] [image] NULL ,
 [code arturi] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [NAME3] [nvarchar] (50) COLLATE French_CI_AS NULL ,
 [code pe1] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [NAME4] [nvarchar] (50) COLLATE French_CI_AS NULL ,
 [code pe2] [nvarchar] (10) COLLATE French_CI_AS NULL ,
 [name5] [nvarchar] (50) COLLATE French_CI_AS NULL ,
 [priorite] [nvarchar] (1) COLLATE French_CI_AS NULL ,
 [group3] [nvarchar] (10) COLLATE French_CI_AS NULL
 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


---------------
Je me forme moi même par mes lectures
Reply

Marsh Posté le 04-04-2006 à 08:57:04   

Reply

Marsh Posté le 04-04-2006 à 17:01:24    

Salut,  
 
tu ne peux pas passer un nom de table en variable.  
 
Tu peux faire comme ça à la limite :  
 

Code :
  1. CREATE   PROCEDURE [PROCREATE]
  2. (
  3. @TABLE varchar(150)
  4. )
  5. as
  6. declare @sql varchar(2500)
  7. set @sql = 'CREATE TABLE [' + @TABLE + '] (' +
  8. '[CODMAG] [nvarchar] (10) COLLATE French_CI_AS NULL,' +
  9. 'etc.... Etc... ' +
  10. ') ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] '
  11. exec(@sql)
  12. GO


 
L'idéal étant de tester le nom de la table avant sa création pour voir si elle n'existe pas déja et ne pas avoir d'erreur...


Message édité par THX le 04-04-2006 à 17:01:52
Reply

Marsh Posté le 07-04-2006 à 11:49:54    

Ou tu fais une proc qui génère la proc de création ; question bête : pourquoi des procs plutot que des scripts ?


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed