CREATE PROCEDURE PR_VI_STOCK
(@CLE_PRODUIT INT=3DNULL,
@STOCK INT=3D0 OUTPUT)
AS
declare @STOCK_ACHAT INT
declare @STOCK_CONSO INT
declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHAT=3DCAST(SUM(ACH_QUANTITE) AS INTEGER)
FROM TB_VI_ACHATS
WHERE ACH_PRODUIT=3D@CLE_PRODUIT
SELECT @STOCK_CONSO=3DCAST(SUM(CON_QUANTITE) AS INTEGER)
FROM TB_VI_CONSOS
WHERE CON_PRODUIT=3D@CLE_PRODUIT
SELECT @STOCK_PRODUIT=3DCAST(BTE_STOCK AS INTEGER)
FROM TB_VI_PRODUIT
WHERE BTE_CLE=3D@CLE_PRODUIT
if (@STOCK_ACHAT is null )
begin=20
SET @STOCK_ACHAT=3D0=20
end
if (@STOCK_CONSO is null )=20
begin=20
SET @STOCK_CONSO=3D0=20
end
if (@STOCK_PRODUIT is null )
begin=20
SET @STOCK_PRODUIT=3D0=20
end
=09
SET @STOCK=3D@STOCK_PRODUIT+@STOCK_ACHAT-@STOCK_CONSO
RETURN
Quand j'ex=E9cute cette proc=E9dure dans l'analyseur de=20
requ=EAte je n'ai aucun r=E9sultat, hors je devrais r=E9cup=E9rer=20
le stock ou z=E9ro. O=F9 est mon erreur?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bruno reiter [MVP]
si tu veux le sortir, fais à la fin de la SP : select @stock
br
"taboup" wrote in message news:2b9001c42873$2a2822c0$ Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
si tu veux le sortir, fais à la fin de la SP :
select @stock
br
"taboup" <taboup@free.fr> wrote in message
news:2b9001c42873$2a2822c0$a401280a@phx.gbl...
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK
(@CLE_PRODUIT INT=NULL,
@STOCK INT=0 OUTPUT)
AS
declare @STOCK_ACHAT INT
declare @STOCK_CONSO INT
declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER)
FROM TB_VI_ACHATS
WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER)
FROM TB_VI_CONSOS
WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER)
FROM TB_VI_PRODUIT
WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null )
begin
SET @STOCK_ACHAT=0
end
if (@STOCK_CONSO is null )
begin
SET @STOCK_CONSO=0
end
if (@STOCK_PRODUIT is null )
begin
SET @STOCK_PRODUIT=0
end
SET @STOCK=@STOCK_PRODUIT+@STOCK_ACHAT-@STOCK_CONSO
RETURN
Quand j'exécute cette procédure dans l'analyseur de
requête je n'ai aucun résultat, hors je devrais récupérer
le stock ou zéro. Où est mon erreur?
si tu veux le sortir, fais à la fin de la SP : select @stock
br
"taboup" wrote in message news:2b9001c42873$2a2822c0$ Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
Yan
salut,
ta procédure affecte le résultat dans la variable @STOCK, qui est renvoyée modifiée (paramètre d'entrée-sortie), mais ne retourne rien en tant que tel.
si du fais :
declare @val int PR_VI_STOCK(123, @val) select @val
tu auras (me semble-t-il, mais je n'utilise que rarement les paramètres de sortie) le stock pour le produit num. 123 qui s'affichera.
a+
taboup wrote:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
salut,
ta procédure affecte le résultat dans la variable @STOCK, qui est renvoyée
modifiée (paramètre d'entrée-sortie), mais ne retourne rien en tant que tel.
si du fais :
declare @val int
PR_VI_STOCK(123, @val)
select @val
tu auras (me semble-t-il, mais je n'utilise que rarement les paramètres de
sortie) le stock pour le produit num. 123 qui s'affichera.
a+
taboup wrote:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK
(@CLE_PRODUIT INT=NULL,
@STOCK INT=0 OUTPUT)
AS
declare @STOCK_ACHAT INT
declare @STOCK_CONSO INT
declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER)
FROM TB_VI_ACHATS
WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER)
FROM TB_VI_CONSOS
WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER)
FROM TB_VI_PRODUIT
WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null )
begin
SET @STOCK_ACHAT=0
end
if (@STOCK_CONSO is null )
begin
SET @STOCK_CONSO=0
end
if (@STOCK_PRODUIT is null )
begin
SET @STOCK_PRODUIT=0
end
SET @STOCK=@STOCK_PRODUIT+@STOCK_ACHAT-@STOCK_CONSO
RETURN
Quand j'exécute cette procédure dans l'analyseur de
requête je n'ai aucun résultat, hors je devrais récupérer
le stock ou zéro. Où est mon erreur?
ta procédure affecte le résultat dans la variable @STOCK, qui est renvoyée modifiée (paramètre d'entrée-sortie), mais ne retourne rien en tant que tel.
si du fais :
declare @val int PR_VI_STOCK(123, @val) select @val
tu auras (me semble-t-il, mais je n'utilise que rarement les paramètres de sortie) le stock pour le produit num. 123 qui s'affichera.
a+
taboup wrote:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
Fred BROUARD
Et si on simplifiait ???
CREATE PROCEDURE PR_VI_STOCK @CLE_PRODUIT INT = NULL, @STOCK INT = 0 OUTPUT AS
SELECT @STOCK = COALESCE(CAST(SUM(ACH_QUANTITE) AS INTEGER), 0) + COALESCE(CAST(BTE_STOCK AS INTEGER), 0) - COALESCE(CAST(SUM(CON_QUANTITE) AS INTEGER), 0) FROM TB_VI_ACHATS A LEFT OUTER JOIN TB_VI_CONSOS C ON A.ACH_PRODUIT = C.CON_PRODUIT LEFT OUTER JOIN TB_VI_PRODUIT ON A.ACH_PRODUIT = BTE_CLE WHERE A.ACH_PRODUIT=@CLE_PRODUIT
C'est suffisant et certainement beaucoup plus rapide ! Pas de variables locales, une seule requête...
Pour tester :
DECLARE @STOCKview INT SET @STOCKview = 0
EXEC PR_VI_STOCK 1, @STOCKview OUTPUT
SELECT @STOCKview
A +
taboup a écrit:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Et si on simplifiait ???
CREATE PROCEDURE PR_VI_STOCK
@CLE_PRODUIT INT = NULL,
@STOCK INT = 0 OUTPUT
AS
SELECT @STOCK = COALESCE(CAST(SUM(ACH_QUANTITE) AS INTEGER), 0)
+ COALESCE(CAST(BTE_STOCK AS INTEGER), 0)
- COALESCE(CAST(SUM(CON_QUANTITE) AS INTEGER), 0)
FROM TB_VI_ACHATS A
LEFT OUTER JOIN TB_VI_CONSOS C
ON A.ACH_PRODUIT = C.CON_PRODUIT
LEFT OUTER JOIN TB_VI_PRODUIT
ON A.ACH_PRODUIT = BTE_CLE
WHERE A.ACH_PRODUIT=@CLE_PRODUIT
C'est suffisant et certainement beaucoup plus rapide !
Pas de variables locales, une seule requête...
Pour tester :
DECLARE @STOCKview INT
SET @STOCKview = 0
EXEC PR_VI_STOCK 1, @STOCKview OUTPUT
SELECT @STOCKview
A +
taboup a écrit:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK
(@CLE_PRODUIT INT=NULL,
@STOCK INT=0 OUTPUT)
AS
declare @STOCK_ACHAT INT
declare @STOCK_CONSO INT
declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER)
FROM TB_VI_ACHATS
WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER)
FROM TB_VI_CONSOS
WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER)
FROM TB_VI_PRODUIT
WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null )
begin
SET @STOCK_ACHAT=0
end
if (@STOCK_CONSO is null )
begin
SET @STOCK_CONSO=0
end
if (@STOCK_PRODUIT is null )
begin
SET @STOCK_PRODUIT=0
end
SET @STOCK=@STOCK_PRODUIT+@STOCK_ACHAT-@STOCK_CONSO
RETURN
Quand j'exécute cette procédure dans l'analyseur de
requête je n'ai aucun résultat, hors je devrais récupérer
le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
CREATE PROCEDURE PR_VI_STOCK @CLE_PRODUIT INT = NULL, @STOCK INT = 0 OUTPUT AS
SELECT @STOCK = COALESCE(CAST(SUM(ACH_QUANTITE) AS INTEGER), 0) + COALESCE(CAST(BTE_STOCK AS INTEGER), 0) - COALESCE(CAST(SUM(CON_QUANTITE) AS INTEGER), 0) FROM TB_VI_ACHATS A LEFT OUTER JOIN TB_VI_CONSOS C ON A.ACH_PRODUIT = C.CON_PRODUIT LEFT OUTER JOIN TB_VI_PRODUIT ON A.ACH_PRODUIT = BTE_CLE WHERE A.ACH_PRODUIT=@CLE_PRODUIT
C'est suffisant et certainement beaucoup plus rapide ! Pas de variables locales, une seule requête...
Pour tester :
DECLARE @STOCKview INT SET @STOCKview = 0
EXEC PR_VI_STOCK 1, @STOCKview OUTPUT
SELECT @STOCKview
A +
taboup a écrit:
Bonjour
j'ai la procedure stockée suivante:
CREATE PROCEDURE PR_VI_STOCK (@CLE_PRODUIT INT=NULL, @STOCK INT=0 OUTPUT) AS declare @STOCK_ACHAT INT declare @STOCK_CONSO INT declare @STOCK_PRODUIT INT
SELECT @STOCK_ACHATÊST(SUM(ACH_QUANTITE) AS INTEGER) FROM TB_VI_ACHATS WHERE ACH_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_CONSOÊST(SUM(CON_QUANTITE) AS INTEGER) FROM TB_VI_CONSOS WHERE CON_PRODUIT=@CLE_PRODUIT
SELECT @STOCK_PRODUITÊST(BTE_STOCK AS INTEGER) FROM TB_VI_PRODUIT WHERE BTE_CLE=@CLE_PRODUIT
if (@STOCK_ACHAT is null ) begin SET @STOCK_ACHAT=0 end if (@STOCK_CONSO is null ) begin SET @STOCK_CONSO=0 end if (@STOCK_PRODUIT is null ) begin SET @STOCK_PRODUIT=0 end
SET @STOCK=@STOCK_PRODUIT+@ RETURN
Quand j'exécute cette procédure dans l'analyseur de requête je n'ai aucun résultat, hors je devrais récupérer le stock ou zéro. Où est mon erreur?
Toutes vos remarques m'intéressent
Merci de votre aide pour un pauvre débutant SQL
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************