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

Adaptive Server Enterprise Sybase Discussion :

Créer une fonction dans sybase


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Par défaut Créer une fonction dans sybase
    Bonjour,

    Je voudrais créer une fonction qui va être utilisée dans les requêtes.

    Par exemple : select col1, col2 from table1 where ma_fonction(col3) = ...

    Vu dans la doc de Sybase http://infocenter.sybase.com/help/in...s/blocks73.htm, il me semble qu'on ne peut pas créer de fonction mais que des procédures. Mais comment utiliser les procédures dans les requêtes sql? J'ai essayé SELECT ma_procedure(col)... mais ça ne marche pas .

    Si quelqu'un a déjà résolu le même type de problème, je suis preneur.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par trungsi Voir le message
    Bonjour,

    Je voudrais créer une fonction qui va être utilisée dans les requêtes.

    Par exemple : select col1, col2 from table1 where ma_fonction(col3) = ...

    Vu dans la doc de Sybase http://infocenter.sybase.com/help/in...s/blocks73.htm, il me semble qu'on ne peut pas créer de fonction mais que des procédures. Mais comment utiliser les procédures dans les requêtes sql? J'ai essayé SELECT ma_procedure(col)... mais ça ne marche pas .

    Si quelqu'un a déjà résolu le même type de problème, je suis preneur.

    Merci
    Pour appeler une proc, il faut tout simplement faire un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec proc param1 param2

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Premièrement, quelle version d'ASE?

    Si il s'agit de 15.0.2 ou plus récent, alors on peut écrire de vrai fonctions en T-SQL - par example:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create function my_max(@id1 int, @id2 int)
    returns int
    as
      return case when @id1 > @id2 then @id1 else @id2 end
    go
     
    select dbo.my_max(1, 2)
    go
    Si tu n'es pas en 15.0.2 - on peut créer des fonctions en java (ce que je n'ai jamais fait...)
    Autrement - ce sont des procs stockées, qui ne sont pas appelables en ligne dans un SELECT.

    Michael

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Par défaut
    ASE 12.5.3 .

    Je vais donc "inliner" toute la logic de ma fonction dans les requêtes SQL. Car c'est encore possible. Tant pis pour la "readabilité".

    En fait, ce que je voudrais faire est la recherche sans prise en compte des caractères non accentués. Ma solution sera une grande chaine de str_replace().

    Si quelqu'un a une meilleure solution, je suis toujours preneur

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 134
    Par défaut
    Tu peux utiliser la fonction T-SQL upper() ou changer le character set de ton serveur (je te déconseille la dernière solution, trop risquée..).

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Par défaut
    Roller,

    upper() ne marche pas. Il y a des caractères accentués en majuscule.

    La deuxième solution n'est pas envisageable car j'ai pas la main sur le serveur. Et comme tu dis, c'est risqué.

Discussions similaires

  1. Comment créer une fonction dans OpenERP
    Par Boubaker Abdallah dans le forum Odoo (ex-OpenERP)
    Réponses: 7
    Dernier message: 27/04/2014, 23h34
  2. Créer une fonction appelée dans le contrôleur
    Par cissou06 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 13/02/2008, 11h08
  3. Créer une fonction dans une fonction
    Par chris81 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/12/2007, 15h50
  4. comment créer une fonction dans un activex
    Par barhoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/03/2007, 18h19
  5. Créer dynamiquement une fonction dans une procedure
    Par cbon1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/10/2006, 10h29

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