PL/SQL

PL/SQL - SQL/NoSQL - Programmation

Marsh Posté le 23-05-2006 à 17:23:47    

Bonjour,
J'ai besoin d'un coup de main.
Voilà, soit une requête sql quelconque.
Pour des raisons techniques j'ai besoin de la jouer plusieurs fois (à chaque fois, je lui filerai une valeur différente d'un paramètre).
En raison de cet aspect procédural, je voudrais utiliser PL/SQL.
Je pense donc qu'il suffit d'une extension consistant à enrober ma requête initiale dans un bloc PL/SQL (BEGIN...END;).
Mais comment faire si je veux toujours avoir à l'exécution (sous Sqlplus par exemple), la liste des tuples qui s'affiche comme initialement.
En gros, la sortie de résultat resterait identique sauf que le code serait transformé en code PL/SQL.
Dois-je là aussi définir un cursor et faire des dbms...output?
Merci de votre aide.

Reply

Marsh Posté le 23-05-2006 à 17:23:47   

Reply

Marsh Posté le 23-05-2006 à 17:39:46    

le coup des dbms_output est la seule solution que je connaisse. cependant, y'en a peut-être d'autres
 
(je sens que ça t'ête vachement là :D)
 
sinon, tu peux aussi faire un batch, qui lance des sqlplus avec la requête, et qui passe lui-même ces paramètres. t'aura une sortie à l'écran ou dans un fichier... mais pas dans toad :D

Reply

Marsh Posté le 24-05-2006 à 11:28:15    

ORA-06502: PL/SQL: numeric or value error: character string buffer too small
 
J'ai déclaré un cursor comme étant ma requête.
A l'exécution, il y a maintenant une erreur sur la ligne du OPEN.
 
Ci-dessous le message d'erreur:
 
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
 
Est-ce dû à la taille de la requête?
Les CURSOR sont-ils limités en taille?
 
Merci de votre aide

Reply

Marsh Posté le 24-05-2006 à 11:29:36    

set serveroutput size 1000000
 
si c'est pas suffisant faudrait générer le résultat dans un fichier

Reply

Marsh Posté le 24-05-2006 à 11:35:50    

orafrance a écrit :

set serveroutput size 1000000
 
si c'est pas suffisant faudrait générer le résultat dans un fichier


 
Ok, je vais tester.
Dites, je profite de votre réponse pour avoir une précision.
En fait, j'utilise un progiciel qui alimente une base de données à partir de requêtes Oracle.
C'est à dire qu'initialement, sous Toad ou sous Sqlplus ces requêtes affichaient à l'execution les tuples.
Mais là en réécrivant la requête en PL/SQL, comment faire en sorte que les sorties se fassent de la même façon afin que mon progiciel puisse alimenter la BD?
Là je fais mes tests avec des DBMS_OUTPUT.PUT_LINE mais je ne suis pas sûr du résultat.
Ou faudra-t-il utiliser la notion de RESULT CURSOR?

Reply

Marsh Posté le 24-05-2006 à 11:37:37    

le mieux c'est que l'insert soit fait dans le code PL/SQL plutôt que l'appli... sinon, ça dépend du fonctionnement du progiciel en question :/

Reply

Marsh Posté le 24-05-2006 à 11:39:15    

orafrance a écrit :

le mieux c'est que l'insert soit fait dans le code PL/SQL plutôt que l'appli... sinon, ça dépend du fonctionnement du progiciel en question :/


 
Zut! Je suis inquiet.
Car la configuration est-elle que la connexion et l'envoi des tuples se fait de façon transparente.

Reply

Marsh Posté le 24-05-2006 à 11:52:21    

orafrance a écrit :

le mieux c'est que l'insert soit fait dans le code PL/SQL plutôt que l'appli... sinon, ça dépend du fonctionnement du progiciel en question :/


 
Dites,
La structure de données TABLE disponible sous PL/SQL pourrait-elle faire l'affaire?
Je vais y faire des INSERT temporairement.

Reply

Marsh Posté le 24-05-2006 à 11:58:17    

je ne peux rien affirmer sans savoir comment travail le progiciel :/

Reply

Marsh Posté le 24-05-2006 à 12:04:35    

orafrance a écrit :

je ne peux rien affirmer sans savoir comment travail le progiciel :/


Pouvez-vous me briefer rapidement sur la notion de table PL/SQL

Reply

Marsh Posté le 24-05-2006 à 12:04:35   

Reply

Marsh Posté le 24-05-2006 à 12:09:57    

Reply

Marsh Posté le 24-05-2006 à 12:19:26    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed