Max207
Messages postés19Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention17 octobre 2008
-
22 févr. 2008 à 14:02
ahmas82
Messages postés3Date d'inscriptionlundi 10 mai 2010StatutMembreDernière intervention24 janvier 2013
-
28 juil. 2010 à 09:50
Bonjour à tous,
Je fais mes premiers pas en SQL Server et je rencontre quelques difficultés. Pas de soucis niveau création des tables & cies car je suis un habitué de SQL depuis quelques années. Ces derniers temps, j'ai beaucoup travaillé avec PostgreSQL et en particulier sur la programmation côté BDD. J'arrivais à créer des fonctions biens pratiques assez simplement... Nous y voilà car c'est ce que je tente de convertir en SQL Server (ou T-SQL devrais-je dire). Sous cet SQL j'ai du mal à comprendre la différence entre procédure stockée et fonction car d'après ce que j'ai lu elles retournes des valeurs toutes les deux. Pourriez-vous m'expliquer?
Entrons dans le vif du sujet. Je vais vous donner l'exemple d'une fonction que j'utilisais en PostreSQL car je cherche son équivalent en T-SQL.
J'ai donc une fonction delete_user qui a pour but de supprimer un utilisateur en vérifiant si celui-ci est lié à une autre table. Si c'est le cas alors l'utilisateur est supprimé logiquement (càd qu'une valeur dans la table d'utilisateur passe au booléan TRUE, c'est donc un UPDATE) et si il n'est pas lié alors on le supprime physiquement (DELETE). Chose très importante pour moi, selon le cas de suppression je souhaite retourner un code (int) adapté a la situation soit : 0 si suppression logique et 1 si suppression physique.
Voici mon code coté PostreSQL:
create function delete_user(integer) returns integer
//la fonction a un argument type int et retourne un argument type int
AS '
DECLARE var_iduser ALIAS FOR $1;
//la variable passée en paramètre
DECLARE var_temp INTEGER;
//une variable déclarée localement
BEGIN
SELECT id_utilisateur INTO var_temp FROM table_message WHERE id_utilisateur=var_iduser;
//on fait un select de l'id_utilisateur dans la table message.
IF FOUND THEN
//si il y a un résultat (grâce au SELECT INTO var_temp), on fait un UPDATE
UPDATE table_utilisateur SET delete_logique=TRUE WHERE id_utilisateur=var_iduser;
return 0;
//la fonction retourne 0, suppression logique
ELSE
DELETE FROM table_message WHERE id_utilisateur=var_iduser;
//si pas de résultat on fait un delete
return 1;
//la fonction retourne 1, suppression physique
END IF;
END;
' LANGUAGE 'plpgsql';
Ensuite je devrai récupérer cette valeur en C#, ASP.NET (ExecuteScalar je crois) mais ça c'est une autre histoire.
Puis-je espérer un ptit coup de main? Merci d'avances. A bientôt !
ahmas82
Messages postés3Date d'inscriptionlundi 10 mai 2010StatutMembreDernière intervention24 janvier 20131 28 juil. 2010 à 09:48
salut je suis entrain de faire un stage et je veux écrire un fonction qui permet de retouner une valeur et que je récupère dans une procédure stocqué qui permettra de genérer une clé automatique dans mon application je developpe en c#
stp aidez moi je suis bloqué depuis une semaine et mon encadreur attend le résultat vendredi