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

PL/SQL Oracle Discussion :

Create or replace function


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Par défaut Create or replace function
    Bonjour,
    voilà mon problème (oracle 11g)
    je récupère une string que je souhaite utiliser dans ma fonction en tant que commande mais je ne sais pas comment supprimer le fait qu'il encadre ce string par des " ' " et que donc mon select n'interprète pas cette variable comme une commande ...
    bref, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create OR replace function getnextval(nomseq IN varchar2)
    return number
    IS 
    id number;
    begin
    SELECT nomseq || '.NEXTVAL' into id FROM dual;
    return(id);
    END getnextval;
    pas d'erreur de compil, mais lors de l'appel, j'ai bien sur une erreur type conversion ...

    au lieu de me retourner un nombre il me retourne le string tel quel comme le ferai un simple :
    select 'nomseq.nextval' from dual; => nomseq.nextval

    problème de simple quotes encadrant les string .... et je cale depuis trop longtemsp ...
    j'ai déjà essayé avec un def nomseq="ma_sequence" puis &nomseq (ça marche quand je le défini en dehors de ma fonction mais pas à l'intérieur),
    des idées ?
    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute immediate 'SELECT '||nom_seq||'.NEXTVAL FROM DUAL' into ta_var;
    Mais tu peux le faire directement en 11g:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ta_var := nom_seq.nextval;

  3. #3
    Membre expérimenté
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Par défaut
    => ok, j'ai pris le execute immediate... qui me parait plus "portable".
    Merci pour ta réponse rapide, tu m'enlèves une épine du pied ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/11/2006, 09h32
  2. pb script sql sur trigger (create or replace)
    Par sun19 dans le forum Développement
    Réponses: 3
    Dernier message: 29/11/2006, 13h02
  3. [AS400]Create Or Replace Procedure
    Par aicfr dans le forum DB2
    Réponses: 1
    Dernier message: 14/06/2006, 14h24
  4. Create or replace view????
    Par jordinette dans le forum Access
    Réponses: 6
    Dernier message: 29/12/2005, 10h21
  5. replace function
    Par tiopan dans le forum Access
    Réponses: 11
    Dernier message: 14/10/2005, 13h55

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