|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 5 ![]() |
Je veux créer une procédure stockée pour rendre la saisie d'un champs obligatoire. Voici ma procédure, mais, elle marche pas
Code :
|
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Heu... il manque a un bout de la SP la non (sinon c'est normal qu'elle ne fonctionne pas et sinon : Citation:
Avec seulement la moitié de la SP, et sans message d'erreur, cela va etre difficile de vous aider... |
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : juin 2006 Messages : 161 ![]() |
Bonjour,
Oubliez les curseurs, ce n'est pas comme ça qu'on programme en SQL. Pourquoi ne pas rendre NOT NULLABLE la colonne qui vous intéresse ? @+ |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 5 ![]() |
J'ai pas d'erreur, mais j'arrive pas à contrôler le champs.
Je travail sur un outil dont j'ai pas le code source mais ilest paramétrable et je peux contrôler le champs par une procédure stockée. |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
je ne comprend pas bien
vous lancez la procédure tel quel ? avez vous posté la totalité de la procédure ? il est normal qu'elle vous remonte tout le temps une erreur, il y a un RAISERRROR sur le chemin de code. pourquoi utiliser un GOTO ? pourquoi ne pas faire simplement Code SQL :
Sinon mettez un autre GOTO devant votre label LBL_ERROR pour éviter que le raiserror ne soit exécuté s'il n'y a pas d'erreur... |
||
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() |
Citation:
Vous voulez seulement contrôler lors de vos UPDATE/INSERT si la colonne est bien renseignée? Si c'est le cas et que vous ne pouvez modifier la structure de la table (CONTRAINTE NOT NULL sur la colonne...) passez par des TRIGGERS.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#7 | |||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
Citation:
Pour le faire fonctionner il aurait fallu écrire : Code :
Vous noterez de plus que vous ne dés-allouez pas le curseur (CLOSE + DEALLOCATE). Oubliez les curseurs. SQL est un langage ensembliste, donc il est conçu pour traiter très rapidement les données dans leur ensemble, et pas dans leur unité. Pareil pour les LBL_ERROR: et les GOTO : c'est vieux et moche. Vous auriez pu donc écrire, avec votre curseur : Code :
Je pense que c'est ce qu'il vous faut plutôt : Code :
Si au moins une ligne correspond, ce que SQL Server peut savoir très vite si votre table est bien indexée, l'erreur est levée. Dans votre cas vous parcourez, un à un, les lignes de votre curseur, en espérant trouver un DstCtcDsc à NULL. Autrement dit vous tournez encore les pages pour trouver celle qu'il vous faut, alors que je suis déjà en train de la lire ! SQL est aussi un langage déclaratif : vous dites ce que vous voulez obtenir, pas la façon dont vous voulez l'obtenir (comme dans un langage fonctionnel). @++
__________________
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 |
|||||||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 5 ![]() |
Je vais vous expliquer ce que je veux faire:
J'ai un outil de gestion qui permet de créer des demandes clients. Lors de la création d'une demande je veux obliger l'utilisateur à saisir un champs qui n'est pas obligatoire par défaut. L'outil me permer d'associer une procédure stockée à ce champs. C'est pourquoi en fait j'ai décider de faire ça. Donc, comment faire, je suis vraiment perdue |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() |
Pouvez vous passer la valeur qui va être insérée dans de la colonne en paramètre de cette procédure stockée?
Si oui rien de plus simple: Code :
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Non seulement ce devrait être implémenté comme vous le propose iberserk, mais vous devriez réaliser en plus ce contrôle côté applicatif !
@++
__________________
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 |
|
00
|
|
|
#11 |
|
Membre chevronné
![]() ![]() |
Salut
Pour rendre obligatoire un champs d'une table vous avez deux choix:
Bonne recherche
__________________
Le monde est trop bien programmé pour être l’œuvre du hasard… |
|
00
|
|
|
#12 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
La première proposition d'alassanediakite étant de loin la plus propre et la plus performante.
@++
__________________
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 |
|
00
|
|
|
#13 |
|
Membre confirmé
![]() ![]() Emmanuel CHONIONInscription : novembre 2006 Messages : 229 ![]() |
Est-ce que l'outil de gestion permet de définir ou même d'imposer un paramètre à la procédure stockée associée à ton champ ?
Ca peut sembler étrange de vérifier toute la table pour une seule entrée... Je pense que ce genre de contrôle est destiné à implémenter des règles de gestion spécifiques. Donc on a besoin de la valeur... |
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#15 | |
|
Membre chevronné
![]() ![]() |
Salut
Comment voulez-vous qu'une PS vérifie un champ? Supposons que l'outil (mais de quel outil s'agit-il?) permet d'associer un évènement (après mise à jour par exemple) au champ ciblé: on appelle le PS et qui renvoi une erreur, erreur qu'il va falloir capter et interpréter dans l'outil. Ma question est: si l'outil permet d'associer des évènement à un champ (je ne voie pas comment le faire autrement!!!), pourquoi ne pas laisser l'outil gérer le contenu du champ? autant que je sache, les PS s'executent sur le serveur? Citation:
@+
__________________
Le monde est trop bien programmé pour être l’œuvre du hasard… |
|
|
00
|
|
|
#16 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
As tu un exemple d'une ps proposée par l'éditeur et qui fonctionne, ce sera peut être plus simple d'en comprendre l'utilité et le fonctionnement.
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com