OVH Cloud OVH Cloud

probleme @@rowcount

2 réponses
Avatar
Chris
merci , sauriez vous pk ma requete insert me renvoit un @@rowcount a 0 alors
que l'insertion s'est bien passé et que je voit la ligne dans le manager.

voila le code

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[sp_i_RGEntreprise]

@rs nvarchar(100),

@adresse nvarchar(50),

@adressesuite nvarchar(50),

@cp nvarchar(10),

@ville nvarchar(50),

@tel nvarchar(20),

@fax nvarchar(20),

@siteweb nvarchar(50),

@mail nvarchar(50),

@siret nvarchar(50),

@fj nvarchar(20),

@capsocial nchar(10),

@ape nvarchar(20),

@numintracomm nvarchar(20),

@smtp nvarchar(20)

AS

BEGIN

SET NOCOUNT OFF;

INSERT INTO Entreprise
VALUES(@rs,@adresse,@adressesuite,@cp,@ville,@tel,@fax,@siteweb,@mail,

@siret,@fj,@capsocial,@ape,@numintracomm,@smtp)

return @@rowcount

END

merci de votre aide

2 réponses

Avatar
SQLpro
Essayez :
ALTER PROCEDURE [dbo].[sp_i_RGEntreprise]
@rs nvarchar(100),
@adresse nvarchar(50),
@adressesuite nvarchar(50),
@cp nvarchar(10),
@ville nvarchar(50),
@tel nvarchar(20),
@fax nvarchar(20),
@siteweb nvarchar(50),
@mail nvarchar(50),
@siret nvarchar(50),
@fj nvarchar(20),
@capsocial nchar(10),
@ape nvarchar(20),
@numintracomm nvarchar(20),
@smtp nvarchar(20)
AS

BEGIN

SET NOCOUNT OFF;

DECLARE @RETVAL INT

INSERT INTO Entreprise
VALUES(@rs,@adresse,@adressesuite,@cp,@ville,@tel,@fax,@siteweb,@mail,
@siret,@fj,@capsocial,@ape,@numintracomm,@smtp)

SET @RETVAL = @@rowcount

SELECT @RETVAL

END

1) votre façon de coder écrase la valeur de @@ROWCOUNT.
2) return sert à renvoyer le code d'erreur et non de variable de retour.

Pour comprendre comment coder les proc stock je vous conseille de lire
l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L4

A +

Frédéric BROUARD MVP SQL Server
Expert SQL, SGBD relationnels, modélisation de données
Langage SQL et SGBD http://sqlpro.developpez.com/
Formation, audit, optimisation, modélisation, conseil, tuning
-=> http://www.datasapiens.com <=-

"Chris" a écrit :

merci , sauriez vous pk ma requete insert me renvoit un @@rowcount a 0 alors
que l'insertion s'est bien passé et que je voit la ligne dans le manager.

voila le code

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[sp_i_RGEntreprise]

@rs nvarchar(100),

@adresse nvarchar(50),

@adressesuite nvarchar(50),

@cp nvarchar(10),

@ville nvarchar(50),

@tel nvarchar(20),

@fax nvarchar(20),

@siteweb nvarchar(50),

@mail nvarchar(50),

@siret nvarchar(50),

@fj nvarchar(20),

@capsocial nchar(10),

@ape nvarchar(20),

@numintracomm nvarchar(20),

@smtp nvarchar(20)

AS

BEGIN

SET NOCOUNT OFF;

INSERT INTO Entreprise
VALUES(@rs,@adresse,@adressesuite,@cp,@ville,@tel,@fax,@siteweb,@mail,

@siret,@fj,@capsocial,@ape,@numintracomm,@smtp)

return @@rowcount

END

merci de votre aide





Avatar
Med Bouchenafa
Ton code est bon.
Cela depend comment tu testes la valeur retournée par ta procédure
Voici un exemple d'utilisation

CREATE PROCEDURE [dbo].[ps_Test]
AS
BEGIN
CREATE TABLE #tblTest
(
a INT
)
INSERT INTO #tblTest VALUES(1)

return @@rowcount

END


DECLARE @t int
EXEC @t =ps_Test
SELECT @t

la procedure retourne bien @@rowcount que je recupère dans la variable @t

Bien cordialement
Med Bouchenafa

"Chris" wrote in message
news:
merci , sauriez vous pk ma requete insert me renvoit un @@rowcount a 0
alors
que l'insertion s'est bien passé et que je voit la ligne dans le manager.

voila le code

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[sp_i_RGEntreprise]

@rs nvarchar(100),

@adresse nvarchar(50),

@adressesuite nvarchar(50),

@cp nvarchar(10),

@ville nvarchar(50),

@tel nvarchar(20),

@fax nvarchar(20),

@siteweb nvarchar(50),

@mail nvarchar(50),

@siret nvarchar(50),

@fj nvarchar(20),

@capsocial nchar(10),

@ape nvarchar(20),

@numintracomm nvarchar(20),

@smtp nvarchar(20)

AS

BEGIN

SET NOCOUNT OFF;

INSERT INTO Entreprise
VALUES(@rs,@adresse,@adressesuite,@cp,@ville,@tel,@fax,@siteweb,@mail,

@siret,@fj,@capsocial,@ape,@numintracomm,@smtp)

return @@rowcount

END

merci de votre aide