PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 08/08/2018 15:49:34

joguess
Membre

Problème dans l'intégration des fonctions dbms_output.xxx

Bonjour,

Je dois migrer Oracle vers Postgres.

J'ai des vues Oracle qui font appel à des fonctions comme dbms_output non présente dans postgres.

J' ai donc intégrées les fonctions manquantes avec orafce. J'ai créé l'extension orafce qui a créé les schémas :

     List of schemas
     Name     |  Owner   
--------------+----------
dbms_alert   | moi
dbms_assert  | moi
dbms_output  | moi
dbms_pipe    | moi
dbms_random  | moi
dbms_utility | moi
oracle       | moi
plunit       | moi
plvchr       | moi
plvdate      | moi
plvlex       | moi
plvstr       | moi
plvsubst     | moi
public       | postgres
utl_file     | moi

et les fonctions , notamment :

postgres=# \df dbms_output.
                                         List of functions
   Schema    |     Name     | Result data type |           Argument data types            |  Type 
-------------+--------------+------------------+------------------------------------------+--------
dbms_output | disable      | void             |                                          | normal
dbms_output | enable       | void             |                                          | normal
dbms_output | enable       | void             | buffer_size integer                      | normal
dbms_output | get_line     | record           | OUT line text, OUT status integer        | normal
dbms_output | get_lines    | record           | OUT lines text[], INOUT numlines integer | normal
dbms_output | new_line     | void             |                                          | normal
dbms_output | put          | void             | a text                                   | normal
dbms_output | put_line     | void             | a text                                   | normal
dbms_output | serveroutput | void             | boolean                                  | normal
(9 rows)


Pour tester mes fonctions j'exécute cela :

postgres:~/fonctions$ psql < titi.sql
SET
ERREUR:  erreur de syntaxe sur ou près de « DBMS_OUTPUT »
LINE 2:       DBMS_OUTPUT.ENABLE(5)
              ^
postgres:~/fonctions$ cat titi.sql
set search_path="$user", public, pg_catalog,public,dbms_output;

BEGIN
      DBMS_OUTPUT.ENABLE(5)
      DBMS_OUTPUT.SERVEROUTPUT(TRUE)
      DBMS_OUTPUT.PUT_LINE('Messages enabled')
END;

Donc voila , cela ne marche pas. Je ne sais pas utiliser mes fonctions qui sont pourtant bien créées. Merci de ne pas vous moquer, j'ai bien conscience qu'il me manque une compétence.



Le code des fonctions est disponible ici : https://github.com/orafce/orafce/blob/m … 6--3.7.sql

et par exemple cela focntionne :

postgres=# select DBMS_OUTPUT.ENABLE(5);
ATTENTION:  Limit increased to 2000 bytes.
enable
--------

(1 row)


postgres=# select DBMS_OUTPUT.SERVEROUTPUT(TRUE);
serveroutput
--------------

(1 row)

postgres=# select DBMS_OUTPUT.PUT_LINE('Messages enabled');

Messages enabled
put_line
----------

(1 row)

Hors ligne

#2 08/08/2018 15:53:43

joguess
Membre

Re : Problème dans l'intégration des fonctions dbms_output.xxx

Pardon le code du fichier titi.sql pour tester ma fonction est le suivant :

set search_path="$user", public, pg_catalog,public,dbms_output;

BEGIN
      DBMS_OUTPUT.SERVEROUTPUT(TRUE);
      DBMS_OUTPUT.PUT_LINE('Messages enabled');
END;


récupéré depuis le site :                 https://www.enterprisedb.com/docs/en/9. … 1.143.html

Hors ligne

#3 08/08/2018 15:58:12

joguess
Membre

Re : Problème dans l'intégration des fonctions dbms_output.xxx

Et même quand je veux taper le code directement dans la console cela ne marche pas :

postgres=# begin
postgres-# DBMS_OUTPUT.SERVEROUTPUT(TRUE);
ERREUR:  erreur de syntaxe sur ou près de « DBMS_OUTPUT »
LINE 2: DBMS_OUTPUT.SERVEROUTPUT(TRUE);
        ^

Hors ligne

#4 08/08/2018 15:59:28

joguess
Membre

Re : Problème dans l'intégration des fonctions dbms_output.xxx

VoIla l'extension que j'ai créé :

postgres=# select * from pg_extension;
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
---------+----------+--------------+----------------+------------+-----------+--------------
plpgsql |       10 |           11 | f              | 1.0        |           |
orafce  |    16385 |         2200 | f              | 3.6        |           |
(2 rows)

et je suis censé utiliser orafce...

Dernière modification par joguess (08/08/2018 15:59:47)

Hors ligne

#5 08/08/2018 16:04:42

joguess
Membre

Re : Problème dans l'intégration des fonctions dbms_output.xxx

postgres=# \df+ dbms_output.
                                                                                              List of functions
   Schema    |     Name     | Result data type |           Argument data types            |  Type  | Security | Volatility |  Owner   | Language |        Source code         |          Description         
-------------+--------------+------------------+------------------------------------------+--------+----------+------------+----------+----------+----------------------------+-------------------------------
dbms_output | disable      | void             |                                          | normal | invoker  | volatile   | moi | c        | dbms_output_disable        | Disable package functionality
dbms_output | enable       | void             |                                          | normal | invoker  | volatile   | moi | c        | dbms_output_enable_default | Enable package functionality
dbms_output | enable       | void             | buffer_size integer                      | normal | invoker  | volatile   | moi | c        | dbms_output_enable         | Enable package functionality
dbms_output | get_line     | record           | OUT line text, OUT status integer        | normal | invoker  | volatile   | moi | c        | dbms_output_get_line       | Get line from output buffer
dbms_output | get_lines    | record           | OUT lines text[], INOUT numlines integer | normal | invoker  | volatile   | moi | c        | dbms_output_get_lines      | Get lines from output buffer
dbms_output | new_line     | void             |                                          | normal | invoker  | volatile   | moi | c        | dbms_output_new_line       | Put new line char to output
dbms_output | put          | void             | a text                                   | normal | invoker  | volatile   | moi | c        | dbms_output_put            | Put some text to output
dbms_output | put_line     | void             | a text                                   | normal | invoker  | volatile   | moi | c        | dbms_output_put_line       | Put line to output
dbms_output | serveroutput | void             | boolean                                  | normal | invoker  | volatile   | moi | c        | dbms_output_serveroutput   | Set drowing output

Dernière modification par joguess (08/08/2018 17:37:16)

Hors ligne

#6 08/08/2018 18:12:56

rjuju
Administrateur

Re : Problème dans l'intégration des fonctions dbms_output.xxx

joguess a écrit :

Et même quand je veux taper le code directement dans la console cela ne marche pas :

postgres=# begin
postgres-# DBMS_OUTPUT.SERVEROUTPUT(TRUE);
ERREUR:  erreur de syntaxe sur ou près de « DBMS_OUTPUT »
LINE 2: DBMS_OUTPUT.SERVEROUTPUT(TRUE);
        ^

Il manque un point-virgule après le begin, et un select avant le DBMS_OUPUT.  Une fois cela corrigé, cela devrait fonctionner.

Hors ligne

Pied de page des forums