|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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 *********************** |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 *********************** |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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 *********************** |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
"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 |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
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 *********************** |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
"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 |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
"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 |
|
![]() |
| Outils de la discussion | |
|
|