Bonjour,
qu'elle est la difference entre une procedure stockée est une fonction ?
Car j'utilise que des procedures stockées mais sans trop savoir pourquoi![]()
De plus est il possible de faire communiquer une PS et une fonction ?
Merci
Bonjour,
qu'elle est la difference entre une procedure stockée est une fonction ?
Car j'utilise que des procedures stockées mais sans trop savoir pourquoi![]()
De plus est il possible de faire communiquer une PS et une fonction ?
Merci
Une procédure fait quelquechose et une fonction vaut quelquechose
C'est comme en programmation.
Une procedure peut appeller une fonction et vice versa
Une procédure possède une valeur de renvoi et une procédure n'en possède pas.
En fait pour une fonction tu peux faire : a:=taFonction();
Alors qu'une procédure pourra avoir des valeurs OUTPUT et il faut les récupérer à la main. Cela permet d'éxécuter ta procédure, ta/tes valeur(s) sont stockées et les récupérer quelques éxécutions plus tard.
Bonjour,
en plus de ce qui a été dit. Et venant compléter quelques réponses je dirais que :
La fonction retourne une valeur scalaire ou une carément une table ( ça dépend des SGBD et des versions aussi ). Et dans une fonction on ne peut pas appéler une procédure ou faire du DML sur des tables.
La procédure ne retourne pas de valeur sauf pour les entiers car la procédure a un evaleur de retour mais seulement entière. Dans une procédure on peut jouer avec les tables et faire appel à des procédures et des fonctions et on peut aussi y mettre des variables 'OUTPUT' pour retourner des valeurs même non entières. Sauf qu'on ne retourne qu'une seule valeur par variable et on ne pourra pas retourner des tables.
En bref, voilà les principales différences fonctionnelles entre les deux.
Au développeur de choisr laquelle utiliser selon son besoin.
A+
je suis navré de vous dire que vous êtes tous loin de connaitre la différence fondamentale entre une fonction et une PS...
La seule chose importante à dire sur le sujet est la suivante :
Une procédure stockée peut contenir une transaction, voire plusieurs.
En aucun cas une fonction peut contenir une transaction puisque'elle est susceptible d'être utilisée au sein d'une requête ou d'une procédure.
Le reste : retour ou non n'est que détail car une procédure peut retourner une valeur ou une table, tout comme une fonction.
En outre une fonction peut lancer des ordres SQL et retourner une valeur bidon.
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Désolé, sqlPro.
Vous avez dit : "En outre une fonction peut lancer des ordres SQL et retourner une valeur bidon. " Or, on ne peut en aucun cas utiliser une instruction insert, update ou delete sur une table dans une fonction. ALors que pourrait être l'ordre SQL que lancera la fonction et retourner une valeur bidon ?
Et pour la réplique : "En aucun cas une fonction peut contenir une transaction puisque'elle est susceptible d'être utilisée au sein d'une requête ou d'une procédure". Je suis d'accord qu'une fonction ne contient pas de transaction mais seulement parcequ'elle est susceptible d'être utilisée au sein d'une requête. Au sein d'une procédure, je ne vois pas que serait l'inconvénient car on peut aussi utiliser une procédure au sein d'une autre et la transaction ne posera aucun problème.
Autre réplique, "une procédure peut retourner une valeur ou une table". Là si tu pourrais nous éclaircir sur la manière dont une procédure retourne une table? car je sais qu'on peut faire
mais comment pourrait-on le faire à partir d'une procédure?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from dbo.fonction(paramètres)
Je suis encore navré, mais fonctionnellement, ce n'est pas la transaction qui nous pousse à choisir la fonction ou la procédure mais c'est surtout le traitement et le retour de l'information( Données ). Car si c'est une procédure, elle peut contenir une transaction ; si c'est une fonction, elle peut être englobée dans une transaction et je crois que ça reviendrait au même. La transaction est toujours là.
Je ne dis pas que j'ai tout à fait raison, mais c'est une discution à mener.
Respectueusement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager