Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 13h37   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 46
Détails du profil
Informations personnelles :
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2010
Messages : 46
Points : 6
Points : 6
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 :
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.
Alexandre le Grand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 13h57   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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 !
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h42   #3
Invité régulier
 
Inscription : novembre 2010
Messages : 46
Détails du profil
Informations personnelles :
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2010
Messages : 46
Points : 6
Points : 6
Salut, je veux supprimer ces partie de l'enregistrement.
Alexandre le Grand est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/01/2011, 17h51   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par Alexandre le Grand Voir le message
Salut, je veux supprimer ces partie de l'enregistrement.
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 21h47   #5
Invité régulier
 
Inscription : novembre 2010
Messages : 46
Détails du profil
Informations personnelles :
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2010
Messages : 46
Points : 6
Points : 6
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 :
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.
Alexandre le Grand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 04h08   #6
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
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 :
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 :
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 :
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 :
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 :
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

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h30.


 
 
 
 
Partenaires

Hébergement Web