IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Erreur à l'exécution plgsql : ERROR: cannot open SELECT query as cursor


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut Erreur à l'exécution plgsql : ERROR: cannot open SELECT query as cursor
    Bonjour,

    J'ai créé la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION pses(xcrit varchar, xidart integer)
    RETURNS TABLE(lib VARCHAR(100), ref varchar(50),stki1 numeric(13,2)) 
    AS 
    $$
    BEGIN
       RETURN QUERY EXECUTE 'select stki1 into stki1 from f0011 where idart=' || xidart; <-- Source d'erreur
    
       RETURN QUERY EXECUTE 'SELECT  design1,ref,stki1 
                                      FROM f0011 where design1 like ' || E'\'' || xcrit || E'\'';
       RETURN;
    END;
    $$ LANGUAGE plpgsql;

    La fonction est créée avec succès, mais à l'exécution, il retourne le message suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    eydata02=# select * from pses('%ma%',36);                                                 
    ERROR:  cannot open SELECT query as cursor
    CONTEXT:  PL/pgSQL function pses(character varying,integer) line 3 at RETURN QUERY
    eydata02=#

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    La première RETURN QUERY doit avoir un SELECT ayant le même nombre de colonne (champs) que la table de retour. Et pas de INTO dans le SELECT.
    Vous devez avoir quelques chose du genre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION pses(xcrit varchar, xidart integer)
    RETURNS TABLE(lib VARCHAR(100), ref varchar(50),stki1 numeric(13,2)) 
    AS 
    $$
    BEGIN
       RETURN QUERY EXECUTE 'select x, y, z from f0011 where idart=' || xidart; 
    
       RETURN QUERY EXECUTE 'SELECT  design1,ref,stki1 
                                      FROM f0011 where design1 like ' || E'\'' || xcrit || E'\'';
       RETURN;
    END;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION pses(xcrit varchar, xidart integer)
    RETURNS TABLE(lib VARCHAR(100), ref varchar(50),stki1 numeric(13,2)) 
    AS 
    $$
    BEGIN
       RETURN QUERY EXECUTE 'select x, y, z from f0011 where idart=' || xidart
       || ' UNION '
        || 'SELECT  design1,ref,stki1 FROM f0011 where design1 like ' || E'\'' || xcrit || E'\'';
       
    RETURN;
    END;
    Par ailleurs, je voudrais comprendre like ' || E'\'' || xcrit || E'\''
    @
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

Discussions similaires

  1. Erreur avec ImageFont.truetype : "OSError: cannot open resource"
    Par y0han dans le forum Général Python
    Réponses: 2
    Dernier message: 25/02/2015, 11h15
  2. [Lazarus] TSQLQuery : Erreur 'SQLQuery1 : Cannot open a non-select statement'
    Par JP CASSOU dans le forum Lazarus
    Réponses: 4
    Dernier message: 30/09/2014, 13h30
  3. Erreur d'exécution 1004 la methode open de workbooks a echoué
    Par mea4502 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2013, 22h16
  4. Erreur à l'exécution : EDBEngine error $2108
    Par Maleykith dans le forum Bases de données
    Réponses: 22
    Dernier message: 30/04/2009, 23h05
  5. [Turbo Pascal] Erreur d'exécution "runtime error 105"
    Par afifi dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 04/12/2008, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo