PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > [SQL 2000] Insert INTO
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
[SQL 2000] Insert INTO

Réponse
 
LinkBack Outils de la discussion
Vieux 10/08/2007, 19h16   #1
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut [SQL 2000] Insert INTO

Bonjour,
Pour archiver des données, je me sers de INSERT INTO. Mais je voudrais
automatiser la listes des colonnes. Exemple :
INSERT INTO VentautoAR.dbo.VEHICULE (dbo.FN_LISTCOLS('vehicule'))
SELECT (dbo.FN_LISTCOLS('vehicule')) FROM Ventauto.dbo.VEHICULE
RIGHT OUTER JOIN Ventauto.dbo.ARVENDU ON (Ventauto.dbo.ARVENDU.pointpst =
Ventauto.dbo.VEHICULE.pointpst)

Je me sers d'une fonction disponible sur internet pour récupérer les noms de
colonne d'une table. et elle marche.
J'ai une erreur apparement apres la clause SELECT.
Est ce que quelqu'un a déjà fait ce genre de jour ?

--
@+
Guy


  Réponse avec citation
Vieux 11/08/2007, 11h40   #2
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

Guy Gasiorowski a écrit :
> Bonjour,
> Pour archiver des données, je me sers de INSERT INTO. Mais je voudrais
> automatiser la listes des colonnes. Exemple :
> INSERT INTO VentautoAR.dbo.VEHICULE (dbo.FN_LISTCOLS('vehicule'))
> SELECT (dbo.FN_LISTCOLS('vehicule')) FROM Ventauto.dbo.VEHICULE
> RIGHT OUTER JOIN Ventauto.dbo.ARVENDU ON (Ventauto.dbo.ARVENDU.pointpst =
> Ventauto.dbo.VEHICULE.pointpst)
>
> Je me sers d'une fonction disponible sur internet pour récupérer les noms de
> colonne d'une table. et elle marche.
> J'ai une erreur apparement apres la clause SELECT.
> Est ce que quelqu'un a déjà fait ce genre de jour ?
>

vousne pouvez pas faire cela comme ça il faut passer par du sql dynamique.

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 11/08/2007, 12h54   #3
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

Sql dynamique ? Pourquoi pas, je vais chercher si je trouve un exemple
Merci

--
@+
Guy
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
%23Z2njv$2HHA.5880@TK2MSFTNGP03.phx.gbl...
> Guy Gasiorowski a écrit :
>> Bonjour,
>> Pour archiver des données, je me sers de INSERT INTO. Mais je voudrais
>> automatiser la listes des colonnes. Exemple :
>> INSERT INTO VentautoAR.dbo.VEHICULE (dbo.FN_LISTCOLS('vehicule'))
>> SELECT (dbo.FN_LISTCOLS('vehicule')) FROM Ventauto.dbo.VEHICULE
>> RIGHT OUTER JOIN Ventauto.dbo.ARVENDU ON
>> (Ventauto.dbo.ARVENDU.pointpst = Ventauto.dbo.VEHICULE.pointpst)
>>
>> Je me sers d'une fonction disponible sur internet pour récupérer les noms
>> de colonne d'une table. et elle marche.
>> J'ai une erreur apparement apres la clause SELECT.
>> Est ce que quelqu'un a déjà fait ce genre de jour ?
>>

> vousne pouvez pas faire cela comme ça il faut passer par du sql dynamique.
>
> A +
>
> --
> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> ********************* http://www.datasapiens.com ***********************



  Réponse avec citation
Vieux 11/08/2007, 16h07   #4
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

Guy Gasiorowski a écrit :
> Sql dynamique ? Pourquoi pas, je vais chercher si je trouve un exemple
> Merci
>

post en dessous !

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 12/08/2007, 15h02   #5
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO


"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
%23Z2njv$2HHA.5880@TK2MSFTNGP03.phx.gbl...
> Guy Gasiorowski a écrit :
>> Bonjour,
>> Pour archiver des données, je me sers de INSERT INTO. Mais je voudrais
>> automatiser la listes des colonnes. Exemple :
>> INSERT INTO VentautoAR.dbo.VEHICULE (dbo.FN_LISTCOLS('vehicule'))
>> SELECT (dbo.FN_LISTCOLS('vehicule')) FROM Ventauto.dbo.VEHICULE
>> RIGHT OUTER JOIN Ventauto.dbo.ARVENDU ON
>> (Ventauto.dbo.ARVENDU.pointpst = Ventauto.dbo.VEHICULE.pointpst)
>>
>> Je me sers d'une fonction disponible sur internet pour récupérer les noms
>> de colonne d'une table. et elle marche.
>> J'ai une erreur apparement apres la clause SELECT.
>> Est ce que quelqu'un a déjà fait ce genre de jour ?
>>

> vousne pouvez pas faire cela comme ça il faut passer par du sql dynamique.
>
> A +
>
> --
> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> ********************* http://www.datasapiens.com ***********************


Voici la conclusion de mes recherches :
J'ai fait une procédure stockée mais je ne suis pas plus avancée
CREATE PROCEDURE proc_Archive
AS

DECLARE @CMD as varchar(512)

SET @CMD='INSERT INTO VentautoAR.VEHICULE dbo.FN_LISTCOLS(''vehicule'')
SELECT (FN_LISTCOLS(''vehicule'')) FROM Ventauto.VEHICULE RIGHT OUTER JOIN
Ventauto.ARVENDU ON (Ventauto.ARVENDU.pointpst =
Ventauto.VEHICULE.pointpst)'
PRINT @CMD
EXEC(@cmd)
GO

Un petit coup de main ?
Merci d'avance


--
@+
Guy


  Réponse avec citation
Vieux 12/08/2007, 18h51   #6
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

Guy Gasiorowski a écrit :

> Voici la conclusion de mes recherches :
> J'ai fait une procédure stockée mais je ne suis pas plus avancée
> CREATE PROCEDURE proc_Archive
> AS
>
> DECLARE @CMD as varchar(512)
>
> SET @CMD='INSERT INTO VentautoAR.VEHICULE dbo.FN_LISTCOLS(''vehicule'')
> SELECT (FN_LISTCOLS(''vehicule'')) FROM Ventauto.VEHICULE RIGHT OUTER JOIN
> Ventauto.ARVENDU ON (Ventauto.ARVENDU.pointpst =
> Ventauto.VEHICULE.pointpst)'
> PRINT @CMD
> EXEC(@cmd)
> GO
>
> Un petit coup de main ?
> Merci d'avance
>
>


USE VentautoAR;

DECLARE @SQL NVARCHAR(4000), @COLS NVARCHAR(4000);

SET @COLS = ''

-- concaténation des noms des colonnes :
SELECT @COLS = @COLS + COLUMN_NAME + ', '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'VEHICULE';

-- on enlève la dernière virgule parasite
SET @COLS = SUBSTRING(@COLS, 1, LEN(@COLS) - 1);

-- composition dynamique du SQL
SET @SQL = 'INSERT INTO dbo.VEHICULE (' + @COLS + ') '
+ 'SELECT ' + @COLS +' '
+ 'FROM dbo.VEHICULE AS V '
+ ' RIGHT OUTER JOIN dbo.ARVENDU AS A '
+ ' ON A.pointpst = V.pointpst';

-- exécution
EXEC(@SQL);

Si vous aviez lu les articles que j'ai écrit qui présente le langage
Transact SQL sur mon site SQLpro, vous auriez vu une procédure qui
ressemble étrangement à cela !
http://sqlpro.developpez.com/cours/s...nsactsql/#L4.3
procédure SP_SEARCH_STRING_ANYFIELD

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 12/08/2007, 20h49   #7
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO



"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
eJI$RFQ3HHA.1188@TK2MSFTNGP04.phx.gbl...
> Guy Gasiorowski a écrit :
>
>> Voici la conclusion de mes recherches :
>> J'ai fait une procédure stockée mais je ne suis pas plus avancée
>> CREATE PROCEDURE proc_Archive
>> AS
>>
>> DECLARE @CMD as varchar(512)
>>
>> SET @CMD='INSERT INTO VentautoAR.VEHICULE dbo.FN_LISTCOLS(''vehicule'')
>> SELECT (FN_LISTCOLS(''vehicule'')) FROM Ventauto.VEHICULE RIGHT OUTER
>> JOIN Ventauto.ARVENDU ON (Ventauto.ARVENDU.pointpst =
>> Ventauto.VEHICULE.pointpst)'
>> PRINT @CMD
>> EXEC(@cmd)
>> GO
>>
>> Un petit coup de main ?
>> Merci d'avance
>>
>>

>
> USE VentautoAR;
>
> DECLARE @SQL NVARCHAR(4000), @COLS NVARCHAR(4000);
>
> SET @COLS = ''
>
> -- concaténation des noms des colonnes :
> SELECT @COLS = @COLS + COLUMN_NAME + ', '
> FROM INFORMATION_SCHEMA.COLUMNS
> WHERE TABLE_SCHEMA = 'dbo'
> AND TABLE_NAME = 'VEHICULE';
>
> -- on enlève la dernière virgule parasite
> SET @COLS = SUBSTRING(@COLS, 1, LEN(@COLS) - 1);
>
> -- composition dynamique du SQL
> SET @SQL = 'INSERT INTO dbo.VEHICULE (' + @COLS + ') '
> + 'SELECT ' + @COLS +' '
> + 'FROM dbo.VEHICULE AS V '
> + ' RIGHT OUTER JOIN dbo.ARVENDU AS A '
> + ' ON A.pointpst = V.pointpst';
>
> -- exécution
> EXEC(@SQL);
>
> Si vous aviez lu les articles que j'ai écrit qui présente le langage
> Transact SQL sur mon site SQLpro, vous auriez vu une procédure qui
> ressemble étrangement à cela !
> http://sqlpro.developpez.com/cours/s...nsactsql/#L4.3
> procédure SP_SEARCH_STRING_ANYFIELD
>
> A +
>
> --
> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> ********************* http://www.datasapiens.com ***********************


Merci Frédéric,
Pourtant le site sqlpro est un de mes sites de références pour SQL, J'ai
cherché mais jamais je n'aurais trouvé dans cette procédure
(SP_SEARCH_STRING_ANYFIELD)
En tout cas lerci beaucoup pour la réponse, je vais tester çà.
a+
Guy


  Réponse avec citation
Vieux 16/08/2007, 10h44   #8
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO


"Guy Gasiorowski" <guy.gasiorowski@online.fr> a écrit dans le message de
news: eTZqEGR3HHA.5796@TK2MSFTNGP05.phx.gbl...
>
>
> "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
> news: eJI$RFQ3HHA.1188@TK2MSFTNGP04.phx.gbl...
>> Guy Gasiorowski a écrit :
>>
>>> Voici la conclusion de mes recherches :
>>> J'ai fait une procédure stockée mais je ne suis pas plus avancée
>>> CREATE PROCEDURE proc_Archive
>>> AS
>>>
>>> DECLARE @CMD as varchar(512)
>>>
>>> SET @CMD='INSERT INTO VentautoAR.VEHICULE dbo.FN_LISTCOLS(''vehicule'')
>>> SELECT (FN_LISTCOLS(''vehicule'')) FROM Ventauto.VEHICULE RIGHT OUTER
>>> JOIN Ventauto.ARVENDU ON (Ventauto.ARVENDU.pointpst =
>>> Ventauto.VEHICULE.pointpst)'
>>> PRINT @CMD
>>> EXEC(@cmd)
>>> GO
>>>
>>> Un petit coup de main ?
>>> Merci d'avance
>>>
>>>

>>
>> USE VentautoAR;
>>
>> DECLARE @SQL NVARCHAR(4000), @COLS NVARCHAR(4000);
>>
>> SET @COLS = ''
>>
>> -- concaténation des noms des colonnes :
>> SELECT @COLS = @COLS + COLUMN_NAME + ', '
>> FROM INFORMATION_SCHEMA.COLUMNS
>> WHERE TABLE_SCHEMA = 'dbo'
>> AND TABLE_NAME = 'VEHICULE';
>>
>> -- on enlève la dernière virgule parasite
>> SET @COLS = SUBSTRING(@COLS, 1, LEN(@COLS) - 1);
>>
>> -- composition dynamique du SQL
>> SET @SQL = 'INSERT INTO dbo.VEHICULE (' + @COLS + ') '
>> + 'SELECT ' + @COLS +' '
>> + 'FROM dbo.VEHICULE AS V '
>> + ' RIGHT OUTER JOIN dbo.ARVENDU AS A '
>> + ' ON A.pointpst = V.pointpst';
>>
>> -- exécution
>> EXEC(@SQL);
>>
>> Si vous aviez lu les articles que j'ai écrit qui présente le langage
>> Transact SQL sur mon site SQLpro, vous auriez vu une procédure qui
>> ressemble étrangement à cela !
>> http://sqlpro.developpez.com/cours/s...nsactsql/#L4.3
>> procédure SP_SEARCH_STRING_ANYFIELD
>>
>> A +
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
>> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
>> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
>> ********************* http://www.datasapiens.com ***********************

>
> Merci Frédéric,
> Pourtant le site sqlpro est un de mes sites de références pour SQL, J'ai
> cherché mais jamais je n'aurais trouvé dans cette procédure
> (SP_SEARCH_STRING_ANYFIELD)
> En tout cas lerci beaucoup pour la réponse, je vais tester çà.
> a+
> Guy
>
>

Voici la commande insert into générée :
INSERT INTO VentautoAR.dbo.VEHICULE (pointveh, ...) SELECT pointveh, ...
FROM Ventauto.dbo.VEHICULE AS V RIGHT OUTER JOIN Ventauto.dbo.ARVENDU AS ARV
ON ARV.pointpst = V.pointpst

et la commande est correct

Mais il me fait une erreur sur des colonnes ambigus. Ces colonnes sont
celles de la table ARVENDU (pointveh par exemple présent dans les 2 tables).
Comment positionner des alias sur des champs non utilisés ?
Merci d'avance


  Réponse avec citation
Vieux 18/08/2007, 18h46   #9
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

Guy Gasiorowski a écrit :
> Voici la commande insert into générée :
> INSERT INTO VentautoAR.dbo.VEHICULE (pointveh, ...) SELECT pointveh, ...
> FROM Ventauto.dbo.VEHICULE AS V RIGHT OUTER JOIN Ventauto.dbo.ARVENDU AS ARV
> ON ARV.pointpst = V.pointpst
>
> et la commande est correct
>
> Mais il me fait une erreur sur des colonnes ambigus. Ces colonnes sont
> celles de la table ARVENDU (pointveh par exemple présent dans les 2 tables).
> Comment positionner des alias sur des champs non utilisés ?
> Merci d'avance
>
>



INSERT INTO VentautoAR.dbo.VEHICULE (pointveh, ...)
SELECT ???.pointveh, ???....
FROM Ventauto.dbo.VEHICULE AS V
RIGHT OUTER JOIN Ventauto.dbo.ARVENDU AS ARV
ON ARV.pointpst = V.pointpst

et remplace les ??? par les alias.

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 19/08/2007, 13h20   #10
Guy Gasiorowski
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [SQL 2000] Insert INTO

"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
u6rcZeb4HHA.5216@TK2MSFTNGP05.phx.gbl...
> Guy Gasiorowski a écrit :
>> Voici la commande insert into générée :
>> INSERT INTO VentautoAR.dbo.VEHICULE (pointveh, ...) SELECT pointveh, ...
>> FROM Ventauto.dbo.VEHICULE AS V RIGHT OUTER JOIN Ventauto.dbo.ARVENDU AS
>> ARV ON ARV.pointpst = V.pointpst
>>
>> et la commande est correct
>>
>> Mais il me fait une erreur sur des colonnes ambigus. Ces colonnes sont
>> celles de la table ARVENDU (pointveh par exemple présent dans les 2
>> tables). Comment positionner des alias sur des champs non utilisés ?
>> Merci d'avance

>
>
> INSERT INTO VentautoAR.dbo.VEHICULE (pointveh, ...)
> SELECT ???.pointveh, ???....
> FROM Ventauto.dbo.VEHICULE AS V
> RIGHT OUTER JOIN Ventauto.dbo.ARVENDU AS ARV
> ON ARV.pointpst = V.pointpst
>
> et remplace les ??? par les alias.
>
> A +
>

Frédéric,
C'est tout bon, merci pour ta patience.
Guy


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 06h17.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,19711 seconds with 18 queries