IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[PS SQL] générer une erreur en cas de mauvais traitement


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut [PS SQL] générer une erreur en cas de mauvais traitement
    Bonjour,

    Voila mon "problème"

    J'ai crée une procédure stockée, mais elle ne fait pas exactement ce que je voudrais. En gros son principe est le suivante, avant de faire une insertion, je veux vérifier si un élément de meme ID est deja present dans ma table, si ce n'est pas le cas, c'est génial je peux insérer et renvoyer le dernier ID de cette table, si oui...je voudrais générer une erreur, et c'est la que je bloque.

    Voila ma requete actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE  PROCEDURE MaProcedure
    @CODE int,
    @LIBELLE varchar(255)
     
    AS
     
    IF NOT EXISTS (SELECT id FROM maTable WHERE code = @CODE) 
    	insert into maTable (code, libelle) values (@CODE, @LIBELLE) 
    	SELECT @@IDENTITY as id
    RETURN
    GO
    et en gros le principe que je voudrais mettre en place, si je dois l'ecrire en pseudo code, serait le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if not exists (select) {
       Insert
       Select @@identity
    } else {
       RAISERROR("ligne deja existante")
    }
    mais je sais pas ...la syntaxe me manque...
    pourriez vous me donner un coup de main.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE  PROCEDURE dbo.MaProcedure
    @CODE int,
    @LIBELLE varchar(255)
     
    AS BEGIN
     
    SET NOCOUNT ON
     
    IF NOT EXISTS (SELECT 1 FROM dbo.maTable WHERE code = @CODE) BEGIN
    	insert into dbo.maTable (code, libelle) values (@CODE, @LIBELLE) 
    	SELECT SCOPE_IDENTITY() as id
    END ELSE BEGIN
    	RAISERROR('ligne deja existante', 16, 10)
    END
    RETURN
    END
    GO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment générer une erreur suite à une mauvaise saisie
    Par vivevba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2009, 18h23
  2. Réponses: 3
    Dernier message: 25/02/2009, 18h09
  3. Mon serveur SQL génère une erreur
    Par puegnon dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/01/2008, 17h08
  4. [Système] Générer une erreur 404
    Par Neuromancien2 dans le forum Langage
    Réponses: 6
    Dernier message: 23/01/2008, 11h53
  5. Réponses: 7
    Dernier message: 25/08/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo