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

Développement SQL Server Discussion :

Modifier une procédure stockée qui efface une partie d'un enregistrement.


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut Modifier une procédure stockée qui efface une partie d'un enregistrement.
    Bonjour à tous,
    D'abord veuillez m'excuser je suis un peu nouveau. Je voudrais modifier cette procédure stockée, qui comme je voudrais effacerais une partie d'un enregistrement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ALTER  proc Reform_cod_assistance
    @Cod_a_reduir varchar(23)
    as 
    begin 
    set nocount on
    select cod_assistance from T_PAX where cod_assistance=@Cod_a_reduir
     
    delete substring(@Cod_a_reduir,7,4) from T_PAX 
    end 
     
    GO
    Mais mon problème réside en la seconde requête: au niveau de L'idéal serait que ce soit un traitement automatique, qui recherche tous les enregistrement ayant la longueur à réduire à savoir 23. Merci de m'aider.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par Alexandre le Grand Voir le message
    D'abord veuillez m'excuser je suis un peu nouveau.
    Ne vous excusez pas, ca arrive a plein de gens

    pour votre problème, vous êtes loin du compte, si loin qu'il nous est difficile de deviner ce que vous voulez faire.

    Visiblement, vous cherchez à modifier des codes contenus dans une table, en supprimant une partie centrale de ce code, par exemple remplacer les
    ABC_DEF_GHI
    par des
    ABC_GHI

    est-ce bien ca ?

    Mais voulez vous les modifier définitivement dans votre base, ou juste lors de l'extraction, pour les afficher ?

    Précisez votre question, quels sont les codes à modifier, quelle partie voulez-vous supprimer...
    Donnez un exemple, avec un jeu d'essai, ca sera beaucoup plus clair et plus simple !

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Salut, je veux supprimer ces partie de l'enregistrement.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par Alexandre le Grand Voir le message
    Salut, je veux supprimer ces partie de l'enregistrement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Mes excuses pour le précédent message. Je vous explique ici:
    Voici un exemple d'enregistrement:EK-787/788-11-01-2011. Dans mon domaine c'est un lapsus, il convient de noter le précédent enregistrement: "EK-787/11-01-2011".
    pour cela il faudrait effacer "/788-". Voici ce que ,j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ALTER  proc Reform_cod_assistance
    @Cod_a_reduir varchar(23)
    AS 
    begin 
    SET nocount ON
    SELECT cod_assistance FROM T_PAX WHERE cod_assistance=@Cod_a_reduir
     
    DELETE substring(@Cod_a_reduir,7,4) FROM T_PAX 
    end 
     
    GO
    J'espere avoir été assez clair.
    Merci.

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous confondez supprimer un tuple et modifier une valeur
    Un tuple est constitué d'une ou plusieurs valeurs (notez au passage que ces valeurs peuvent être à NULL, qui est un marqueur qui signifie l'absence de valeur).
    Par exemple, supposons que nous avons une entité client décrite par les attributs nom, prénom, pseudo et code.
    Un tuple de cette entité sera donc une ligne de la table client, pour lesquelles on peut avoir, par exemple, nom = Souquet, Prenom= Nicolas, pseudo = elsuket, code = 123456.
    Une représentation physique de cette entité est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE client
    (
    	nom varchar(30) NOT NULL
    	, prenom varchar(30)
    	, pseudo varchar(16) NOT NULL
    	, code int NOT NULL
    )
    Une telle ligne est supprimée à l'aide d'une instruction DELETE, alors qu'elle a été ajoutée à l'aide d'une instruction INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO dbo.client VALUES ('Souquet', 'Nicolas', 'elsuket', 123456)
     
    DELETE FROM dbo.client
    WHERE nom = 'Souquet'
    L'application qui interroge la table client utilise une instruction SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom, prenom, pseudo
    FROM dbo.client
    Supposons maintenant que nous avons une règle métier qui veuille qu'il ne soit pas possible d'avoir un 'k' dans un pseudo.
    Il s'agit donc de mettre à jour la table pour supprimer tous les 'k' des pseudos, et on ne peut faire cela qu'à l'aide d'une instruction UPDATE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE dbo.client
    SET pseudo = REPLACE(pseudo, 'k', '')
    Mon pseudo devient alors elsuet, et aucune des autres valeurs de la ligne qui me représente en tant que client n'est modifiée

    Votre procédure serait donc, si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER  PROC Reform_cod_assistance
    	@Cod_a_reduir varchar(23)
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	UPDATE	dbo.T_PAX
    	SET	cod_assistance = LEFT(cod_assistance, 6) + RIGHT(cod_assistance, 10)
    	WHERE	cod_assistance = @Cod_a_reduir
    END
    N'oubliez pas de qualifier le nom des objets (tables, vues, fonctions, procédures) que vous manipulez dans vos modules (fonctions, procédures et triggers) par le schéma auquel ils appartiennent.
    Par défaut c'est dbo. Cela évite à SQL Server d'interroger les tables de métadonnées pour le trouver à votre place

    Enfin je ne peux que vous conseiller de consulter le site de SQLPro, notamment de commencer par les liens en bas de cette page.
    Vous pouvez également lire son livre que je viens de terminer, et qui est un très bon ouvrage pour disposer de bases solides en bases de données relationnelles SQL

    En espérant vous avoir éclairé, à bientôt

    @++

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/12/2011, 16h26
  2. Ou placer une procédure stockée qui sauvegarde toutes les bases ?
    Par arthuro45 dans le forum Administration
    Réponses: 4
    Dernier message: 27/09/2010, 21h04
  3. Réponses: 6
    Dernier message: 08/09/2010, 17h25
  4. procédure stockée qui appelle une autre
    Par da_latifa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/02/2010, 23h28
  5. Réponses: 0
    Dernier message: 11/09/2009, 18h25

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