2011-06-07 6 views
2

J'interroge le DB et ai besoin d'analyser l'un des champs pour des valeurs spécifiques (en utilisant des fonctions de chaîne). J'ai donc pensé que ce serait mieux d'écrire une fonction pour ça. Je n'ai jamais écrit de fonction auparavant dans plsql, j'ai donc décidé de regarder quelques exemples.Ecriture d'une fonction dans plsql

J'ai obtenu une copie d'une simple fonction "carrée" qui prend un nombre et renvoie le carré de celui-ci, mais je ne sais pas comment l'appeler à partir de l'instruction SQL.

Je n'ai qu'un accès en lecture. Serai-je capable d'écrire des fonctions et de les utiliser pour récupérer les données dont j'ai besoin? Et si oui, comment?

Répondre

3

Pour être en mesure de créer une fonction a besoin de votre utilisateur le privilège CREATE PROCEDURE lui a été accordée par le DBA:

grant create procedure to myschema; 

Si vous avez le privilège, vous pouvez alors créer une fonction comme celui-ci

create function square(n in number) return number 
is 
    return n*n; 
end; 

Et vous pouvez l'appeler à partir de SQL comme ceci:

select num, square(num) 
from mytable; 

note: en Orac le plus souvent il est préférable de créer des fonctions dans packages, auquel cas l'appel SQL serait comme:

select num, mypackage.square(num) 
from mytable; 
+0

Hmm donc je besoin de plus de privilèges pour cela. Je suppose que je vais devoir faire avec ce que j'ai. – MxyL