Je suis nouveau dans PL / SQL essayant des exemples de pratique. Quand dois-je aller pour la procédure code> ou la fonction signifie, quelle que soit la tâche que je fais avec la fonction
J'ai quelques questions concernant PL / SQL Procédure CODE> &
Fonction Code>: P>
code> p>
code> la même tâche va faire en utilisant la procédure code>.
Alors pourquoi devrais-je aller pour la fonction? Est-ce tout avantage de
fonction code> sur la procédure
code> dans pl / sql? p>
fonction code> doit renvoyer la valeur. Est-ce le seul avantage d'utiliser une fonction ou existe-t-il d'autres avantages des fonctions? P>
8 Réponses :
Une fonction définie par l'utilisateur, avec certaines limitations, peut être utilisée dans Vous pouvez Consultez la documentation Oracle Developer en ligne car il est gratuit et très bon: Développement et utilisation de procédures stockées P> Sélectionner des instructions CODE> et PL / SQL
si code> Déclarations, tandis qu'une procédure code> ne peut pas. p>
Sélectionner code> à partir d'une fonction code> code> c'est-à-dire code> comme une table à l'aide d'une table de pipeline et
ligne de conduite code>, Mais c'est une fonctionnalité PL / SQL avancée que vous pouvez utiliser beaucoup plus tard. P>
Quelles sont ces limitations?. Une procédure peut faire toute quelle fonction peut et bien plus encore. Par exemple, vous pouvez retourner une table (s) de paramètres de Refcursor (s). Je suis sceptique à utiliser des fonctions pouvant générer des résultats déterministes, tels que les paramètres de fonction impliquant la date / l'heure. Dans une procédure, vous n'avez pas de telles limitations. La ligne de pipe est l'une des déclarations la plus simples. Votre réponse est plus décourageante que d'encourager le public novice.
@Tonyp pour quelqu'un qui ne connaît pas les bases de PL / SQL, je ne vais pas élargir les détails de la fonction PRAGMA Paramètres et al - docs.oracle.com/cd/b12037_01/appdev.101/b10807/13_elems039.h tm- ma réponse à une direction supplémentaire L'apprentissage et non une boutique unique CLIF notez la version de tout cela.
une "valeur" code> est l'une des nombreuses choses, notamment les tables PL / SQL, les curseurs REF, etc., il est possible d'utiliser une fonction dans SQL déclarations, alors que les procédures ne peuvent pas être utilisées. LI>
- Les procédures sont utilisées pour exécuter la logique commerciale, où nous pouvons retourner plusieurs valeurs de la procédure à l'aide de code> out> ou
dans les paramètres code>. li>
- personnellement, j'utilise personnellement la fonction pour calculer - par exemple: Vérifiez une condition spécifique, comme la récupération d'une valeur basée sur la condition, en vérifiant la condition pour true ou false. Li>
-
Vous pouvez avoir des instructions DML (Insérer, mettre à jour, supprimer) dans une fonction. Mais vous ne pouvez pas appeler une telle fonction dans une requête SQL. * EG: Si vous avez une fonction qui met à jour une table, vous ne pouvez pas appeler cette fonction dans une requête SQL. P>
XXX PRE> LI>
Il est sur votre choix si vous souhaitez utiliser la procédure ou la fonction dépend de votre exigence et de votre confortable. p> ol>
Vous pouvez utiliser DML et DDL dans une fonction utilisée dans une instruction SQL, mais vous devez le déclarer une autonome_transaction. (Bien que ce soit probablement une très mauvaise idée de faire une telle chose.)
Le point 5 est faux. Vous pouvez faire des fonctions DDL de la même manière que dans les procédures.
Avantages principaux: P>
Il y a plus d'avantage d'utiliser la procédure sur la fonction: p>
Si nous voulons exécuter l'instruction SQL dynamiquement à l'aide de la déclaration immédiate, utilisez la procédure. Il ne peut pas être effectué à l'intérieur de la fonction. P> li>
La procédure peut être exécutée de manière indépendante, tandis qu'une fonction doit faire partie d'une instruction exécutable, car elle ne peut pas être exécutée indépendamment. P> LI> ol>
La fonction doit renvoyer une valeur utilisée dans le but de calcul que nous sommes utilisés. Fonction Il doit renvoyer une seule valeurs mais accepte de nombreux types de retour. Fonction que nous pouvons utiliser une instruction SELECT. procédure il peut ne pas renvoyer une valeur. La procédure est que nous pouvons utiliser des opérations DML. procédure que nous pouvons exécuter uniquement. p>
Il est très difficile de comprendre ce que vous essayez de dire.
Bien sûr, vous pouvez exécuter SQL dynamique dans une fonction. Écrivez une fonction simple pour faire le test et vous verrez qu'il fonctionne. P>
Vous pouvez utiliser la fonction ou la procédure la plupart du temps. Les différences sont de savoir si vous souhaitez les utiliser dans une instruction SQL ou dans une instruction IF puis utilisez une fonction. Sinon, utilisez ce qui vous convient le mieux et à l'application d'appel. P>
Je voudrais clarifier la réponse à la question de savoir si vous devez utiliser une procédure stockée ou une fonction dépend entièrement du flux de travail de votre entreprise et de vos travaux de conception, à condition que vous soyez clair sur votre objectif de programme. Si vous n'êtes pas clair sur votre objectif, votre question n'est que votre question, aucune quantité de procédures de codage et de fonctions ne serait utile.
Vous devez noter que les procédures et les fonctions stockées servent de différentes fins dans la programmation PL / SQL. Celles-ci sont les suivantes: p>
Procédures stockées: P>
a. Les procédures stockées représentent des blocs nommés (par opposition aux blocs anonymes) capables d'accepter des paramètres et de travailler sur eux. P>
b. Procédures stockées Définissez un flux de travail de procédure indépendant dans lequel vous pouvez effectuer une série de DML et / ou d'autres opérations. P>
c. Les procédures stockées n'ont pas à renvoyer une valeur. Par conséquent, ils ne peuvent pas être appelés de l'intérieur d'une déclaration SQL. Les procédures stockées doivent être exécutées à partir d'un bloc PL / SQL nommé ou anonyme. P>
d. Mérite: p>
peut simplement être appelé comme une déclaration indépendante à partir d'un bloc PL / SQL. E.g., P>
e. Démérits: p>
fonctions: p>
a. Les fonctions sont nommées de blocs capables d'accepter des paramètres et de renvoyer une valeur. P>
b. Les fonctions définissent également un flux de travail procédural, mais lorsqu'ils sont utilisés dans les instructions SQL, vous ne pouvez effectuer aucune DML ou DDL. P>
c. Une fonction doit être appelée à partir d'une instruction SQL ou PL / SQL où la valeur renvoyée par la fonction est utilisée - c'est-à-dire attribuée à une variable, passée sous forme de paramètre, etc. p>
d. Mérite: p>
e. Démérits: P>
Pour plus d'informations, visitez Oracle Docs < / a>. p> p>
Sélectionnez l'instruction CODE>. LI>
Sélectionnez l'instruction CODE>. LI>
Chaque fois que vous voulez retourner une valeur et que vous devez utiliser cette valeur plus loin, allez-y pour la fonction. Si vous souhaitez retourner une certaine valeur comme résultat final, allez à la procédure. P>
aucune de ces réponses n'est acceptable?