Bonjour,
J'utilise Oracle 10g.
J'ai créé une procèdure stockée dans ma base de données Oracle.
J'aimerais savoir comment je peux l'appeler dans mon Script Shell.
Quelle est la synthaxe a utiliser?
Merci pour votre aide
Cordialement Philippe
Version imprimable
Bonjour,
J'utilise Oracle 10g.
J'ai créé une procèdure stockée dans ma base de données Oracle.
J'aimerais savoir comment je peux l'appeler dans mon Script Shell.
Quelle est la synthaxe a utiliser?
Merci pour votre aide
Cordialement Philippe
select nompackage.nom_procedure(parametres) from <table> (autant d'appel que de lignes dans tables)
select nompackage.nom_procedure(parametres) from dual (1 et 1 seul appel)
Pardon
Je viens de relire le message.
Je suppose que "script shell" veut dire langage de commande de L'OS
La réponse donnée est du pur SQL.
On doit pouvoir passer la commande à SqlPlus, mais je ne suis pas un spécialiste de cet outil.
A partir de Linux, tu peux appeler une procédure stockée en écrivant un script Shell, comme montre l’exemple suivant :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/bin/ksh ################################ # appel procedure ################################ ${ORACLE_HOME}/bin/sqlplus -s $CONNECT_STRING <<EOF set serveroutput on set head off set feed off declare begin my_Procedure; end; / EOF
En faite, mon script shell est deja fait, il faut juste que j'appelle ma procèdure stockée pour qu'elle fasse le traitement demandé!
Je ne comprends pas votre code!
A quoi correspond serveroutput ? head ? feed?
Est ce que vous pouvez mettre des commentaires dans votre code?
Merci pour votre aide
Pour les paramètres:
-s
set serveroutput on
set head off
set feed off
sont optionnels, tu peux les enelver.
ORACLE_HOME : racine d'installation d’oracle.
CONNECT_STRING : chaîne de connexion (User/Password@Database_Spec)
User : nom d'utilisateur
PassWord : mot de passe
Database_Spec : nom du service défini dans le fichier TNSNAMES.ORA à utiliser pour se connecter au serveur. N'est nécessaire que si l'on souhaite se connecter à un serveur oracle distant, on peut s'en passer en local sur le serveur.
Merci pour tout ces détails
Ma base de données Oracle est stockée sur un serveur distant donc j'ai besoin du Database_Spec
Cependant, je n'arrive pas a accèder au fichier TNSNAMES.ORA
J'utilise OracleSqlDeveloper pour accèder a ma base de données Oracle
Est-ce que je suis obligé d'installer et d'utiliser SQLPLUS?
Car je ne comprends pas ton code ci dessous:
Est ce que mon Script Shell te semble correct?Code:
1
2 ${ORACLE_HOME}/bin/sqlplus -s
Merci pour ton aideCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 ORACLE_HOME="/Oracle" CONNECT_STRING="user/pwd@//192.168.xx.xxx:1521/XE" #192.168.xx.xxx correspond au hostname #1521 correspond au port #XE correspond au SID ${ORACLE_HOME} -s $CONNECT_STRING <<EOF set serveroutput on set head off set feed off declare begin DELETE_DOUBLONS_CAT_IMAGES; end; / EOF
Philippe
Dans ton code, tu dois appeller SQLPLUS
car cette instruction est incorrecte ${ORACLE_HOME} -s $CONNECT_STRING <<EOF
Code:
1
2
3
4 ... ${ORACLE_HOME}/bin/sqlplus $CONNECT_STRING ...
Voici un exemple simple et detaillé
directory oracleCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/bin/ksh ####################### # Migration CLIENTS# ####################### date ${ORACLE_HOME}/bin/sqlplus $CONNECT_STRING <<EOF declare begin PKG_Migration.PRC_Migr_Clients; end; / EOF date
echo ${ORACLE_HOME}/
oracle/
echo $CONNECT_STRING
user/password@chaîne_connection