Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Procédure stockée

4 réponses
Avatar
FAUCHILLE Stéphan
Bonjour,

J'utilise un logiciel nommé INSQL, qui est un logiciel industriel se basant
sur une base de données SQL SERVER 2000, qui permet de récupérer différentes
données d'un site de production et de les stocker dans une table de la base
assez spéciale, puisque très fortement compressée. Ce logiciel fournit
différentes procédure stockée permettant de récupérer les données de cette
table compresée.
J'extrait donc les valeurs via macro sur une feuille Excel afin de pouvoir
dresser des rapports.
Afin d'éviter d'exucuter x fois la procédure stockée à partir de ma macro
d'Excel, je souhaite créer une autre procédure stockées qui ferait
- les appel à la première première
- regroupe les resultat dans une table temporaire
- puis un select * de cette table temporaire afin de renvoyer un
recordset à excel

Maintenant ma question :

Après un "exec ProcStockée" comment récupérer les resultats (1 seule ligne,
plusieurs colonnes) afin de insérer dans ma table temporaire ne contenant
pas le même nombre de colonne.

J'espère que vous m'avez compris, je reste à votre disposition si vous avez
des question.

D'avance merci

Stef

4 réponses

Avatar
David Brabant
"FAUCHILLE Stéphan" wrote

Après un "exec ProcStockée" comment récupérer les resultats
(1 seule ligne, plusieurs colonnes) afin de insérer dans ma table
temporaire ne contenant pas le même nombre de colonne.



Crée une table temporaire (#) dans laquelle tu insères ton
result set comme ceci :

create table #maTable(
maColonne int,
monAutreColonne varchar(255))

insert #maTable(maColonne, monAutreColonne)
exec maProcedureStockee

Ensuite, tu peux transférer le résultat vers ta table temporaire
(globale cette fois) via :

create table maTableTemporaire(
uneColonne int,
uneAutreColonne int,
uneChaine varchar(255),
uneAutreChaine varchar(255))

insert maTableTemporaire(uneColonne, uneAutreColonne, uneChaine, uneAutreChaine)
select maColonne, 0, monAutreColonne, 'blah' from #maTable

--
David
Avatar
FAUCHILLE Stéphan
Merci Beaucou pour ta réponse. C'est je que j'ai fait, mais je trouvais ça
compliqué.

Une petite question encore, si ma procédure stockée renvoie plusieurs ligne
est ce que
insert #maTable(maColonne, monAutreColonne)
exec maProcedureStockee

va me remplir automatiquement les différentes ligne dans #maTable



"David Brabant" a écrit dans le
message news: bfqrnd$jjn$
"FAUCHILLE Stéphan" wrote

> Après un "exec ProcStockée" comment récupérer les resultats
> (1 seule ligne, plusieurs colonnes) afin de insérer dans ma table
> temporaire ne contenant pas le même nombre de colonne.

Crée une table temporaire (#) dans laquelle tu insères ton
result set comme ceci :

create table #maTable(
maColonne int,
monAutreColonne varchar(255))

insert #maTable(maColonne, monAutreColonne)
exec maProcedureStockee

Ensuite, tu peux transférer le résultat vers ta table temporaire
(globale cette fois) via :

create table maTableTemporaire(
uneColonne int,
uneAutreColonne int,
uneChaine varchar(255),
uneAutreChaine varchar(255))

insert maTableTemporaire(uneColonne, uneAutreColonne, uneChaine,


uneAutreChaine)
select maColonne, 0, monAutreColonne, 'blah' from #maTable

--
David





Avatar
David Brabant
"FAUCHILLE Stéphan" wrote

Une petite question encore, si ma procédure stockée renvoie plusieurs ligne
est ce que
insert #maTable(maColonne, monAutreColonne)
exec maProcedureStockee

va me remplir automatiquement les différentes ligne dans #maTable



Oui. Essaye ceci:

create proc myProc as
begin
select 1, 'a'
select 2, 'b'
select 3, 'c'
end
go

create table #maTable(a int, b varchar(255))

insert #maTable(a, b)
exec myProc

select * from #maTable

--
David
Avatar
FAUCHILLE Stéphan
OK, ça marche, merci beaucoup pour la rapidité de tes réponses


"David Brabant" a écrit dans le
message news: bfqtl4$r9m$
"FAUCHILLE Stéphan" wrote

> Une petite question encore, si ma procédure stockée renvoie plusieurs


ligne
> est ce que
> insert #maTable(maColonne, monAutreColonne)
> exec maProcedureStockee
>
> va me remplir automatiquement les différentes ligne dans #maTable

Oui. Essaye ceci:

create proc myProc as
begin
select 1, 'a'
select 2, 'b'
select 3, 'c'
end
go

create table #maTable(a int, b varchar(255))

insert #maTable(a, b)
exec myProc

select * from #maTable

--
David