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 :

Aide sur une fonction sous ORacle 8i


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Expert SI
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Expert SI

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Aide sur une fonction sous ORacle 8i
    Bonjour à tous,

    Voila mon problème, j'ai adapté une fonction aux "Standards" SQL qui normalement fonctionne sous SQL Server et Oracle, or bien qu'elle fonctionne au poil sous SQL Server, elle ne semble pas fonctionner sous Oracle (ici une version 8i) et les messages d'erreurs ne me semblent pas hyper compréhensibles non plus...
    Cette fonction, en fonction d'une date et d'un paramètre calcule une autre date en fonction des jours ouvrés/fériés situés dans une table (Tbl_IN_CALENDRIER), elle me permet de calculer une date au plus tard en fonction d'un délai paramétré.

    Voici la fonction d'origine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    CREATE FUNCTION GetWorkingDay
    (
    	@date_init date
       ,@delai int = 0
    )
    RETURNS date
    AS
    BEGIN
    	DECLARE @NewDate AS date
    	DECLARE @sign AS int
     
    	SET @sign = SIGN(@delai)
     
    	-- Si la date passée en paramètre est un JF alors on recherche la date SUIVANTE qui est ouvrée
    	WHILE (SELECT 1 FROM [dbo].[tbl_in_calendrier] WHERE [FLAG_OUVRE] = 0 AND [DAT_JOUR] = @date_init) IS NOT NULL BEGIN
    		SET @date_init = DATEADD(DD, 1, @date_init)
    	END
     
    	SET @NewDate = @date_init
     
    	-- Tant que delai n'est pas à 0 on retire un jour, si c'est un jour férié on ne le retire pas de délai
    	WHILE @delai != 0 BEGIN
    		IF (SELECT 1 FROM [dbo].[tbl_in_calendrier] WHERE [FLAG_OUVRE] = 0 AND [DAT_JOUR] = @NewDate) IS NOT NULL BEGIN
    			SET @NewDate = DATEADD(DD, @sign, @NewDate)
    		END
    		ELSE BEGIN
    			SET @NewDate = DATEADD(DD, SIGN(@delai), @NewDate)
    			SET @delai += -@sign
    		END
    	END
     
    	-- Si la date finale trouvée est un JF alors on recherche la date précédente ou suivante (fonction du signe du délai) qui est ouvrée
    	WHILE (SELECT 1 FROM [dbo].[tbl_in_calendrier] WHERE [FLAG_OUVRE] = 0 AND [DAT_JOUR] = @NewDate) IS NOT NULL BEGIN
    		SET @NewDate = DATEADD(DD, @sign, @NewDate)
    	END
     
    	RETURN @NewDate
    END
    Et les messages d'erreurs
    Erreur(11,11): PLS-00103: Symbole "DATE" rencontré à la place d'un des symboles suivants : . ( * @ % & = - + ; < / > at in is mod remainder not rem <exposant (**)> <> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_ between || multiset member SUBMULTISET_ Symbole "." a été substitué à "DATE" pour continuer.
    Erreur(17,2): PLS-00103: Symbole "WHILE" rencontré à la place d'un des symboles suivants : . ( * % & = - + ; < / > at in is mod remainder not rem <exposant (**)> <> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_ between || multiset member SUBMULTISET_ Symbole "(" a été substitué à "WHILE" pour continuer.
    Erreur(17,23): PLS-00103: Symbole "[" rencontré à la place d'un des symboles suivants : ( <identificateur> <identificateur entre guillemets> table the
    Si quelqu'un pouvait m'aiguiller sur les origines du problèmes, ca serait cool

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Malheureusement, vous n'y êtes pas du tout.
    Si les dialectes SQL de Microsoft SQL-Server et Oracle Database ont une base commune importante, les langages de programmations T-SQL et PL/SQL eux sont radicalement différent.

    Là, il n'y a pas de chose particulière à vous montrer, il faut tout réécrire.

    Au passage, Oracle 8i est sortie en 1999.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Expert SI
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Expert SI

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse Waldar,

    Pour Oracle 8i, malheureusement je ne suis pas en charge de la maintenabilité de la BDD, je travaille sur ce que l'on me donne...

    Pour la ré-écriture du code en programmation, bah ma fois il va falloir que je m'y mette alors...

Discussions similaires

  1. aide sur une fonction
    Par haymen dans le forum C#
    Réponses: 7
    Dernier message: 11/09/2008, 22h14
  2. Aide sur une fonction sous Visual C++ .NET
    Par mog83 dans le forum C++
    Réponses: 0
    Dernier message: 22/04/2008, 15h17
  3. Compréhension d'une fonction sous Oracle
    Par sat83 dans le forum SQL
    Réponses: 2
    Dernier message: 15/11/2007, 14h43
  4. Aide sur une fonction / pbm de manipulation de caractère
    Par captainamerica75 dans le forum Access
    Réponses: 3
    Dernier message: 16/02/2006, 11h54
  5. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40

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