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

MS SQL Server Discussion :

Equivalent de DECLARE TRANSACTION en Oracle


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Par défaut Equivalent de DECLARE TRANSACTION en Oracle
    Bonjour,

    En SQL RDB, il existait l'instruction DECLARE TRANSACTION.
    (Pour info: Specifies the characteristics for a default transaction. A transaction is agroup of statements whose changes can be made permanent or undone only as a unit. The characteristics specified in a DECLARE TRANSACTION statement affect all transactions (except those started by the SET TRANSACTION or START TRANSACTION statement) until you issue another DECLARE TRANSACTION statement. The characteristics specified in a SET TRANSACTION or START TRANSACTION statement affect only that transaction.) (http://download-uk.oracle.com/otn_ho...7143_part3.pdf -- chap 7-222)

    Quelqu'un a-t'il une idée de l'équivalent SQL pour Oracle de cette instruction?

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...chniques/#L1.3
    Oracle fonctionne nativement en transaction implicite.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 33
    Par défaut
    Donc, cette instruction ne sert à rien?

    Voici un exemple de programme. Puis-je le supprimer?
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
          SUBROUTINE LISTE_SOUS_ENSEMBLE_NIV(XNPL,CONTROLE,SOUS,NIV)
          EXEC SQL INCLUDE SQLCA
    
    C[------------- DECLARATION RECORD --------------------------]
          EXEC SQL INCLUDE 'EM8:[UTIL.INC]FCONTROLE.INC'
          RECORD /FCONTROLE/CONTROLE
    
          CHARACTER N_NOMEN*9,XNPL*9,SOUS_PLAN*9,SOUS(400)*9
          DIMENSION NIV(400),IC(400,10)
          CHARACTER TOTO(400)*31
    
          EXEC SQL DECLARE EXTERNAL B2 ALIAS FILENAME RDB$DB_FT
    c      EXEC SQL DECLARE TRANSACTION READ ONLY
    
          N_NOMEN=XNPL
          DO M=1,400
           SOUS(M)='         '
           NIV(M)=0
           TOTO(M)(1:)=' '
           DO LL=1,10
             IC(M,LL)=0
           ENDDO
          ENDDO
          L=1
          IP=1
          SOUS(1)=XNPL
          NIV(1)=0
          NIV_REF=0
    C[------------- INITIALISATION VARIABLE CONTROLE --------------]
          CALL STR$UPCASE(CONTROLE.TRANSACTION,CONTROLE.TRANSACTION)
          CONTROLE.EXISTE='N'                        !INITIALISE à 'existe pas'
          CONTROLE.NB_RECORD_RDB=1                   !NOM de record =0
          CONTROLE.STATUS_RDB=0
          CONTROLE.TYPE_ERREUR=' '
    
    C[------------- OUVERTURE TRANSACTION SI DEMANDEE -------------]
    10    IF(CONTROLE.TRANSACTION.EQ.'O')THEN
            EXEC SQL SET TRANSACTION READ ONLY
            IF(SQLCOD.NE.0)CALL SYST_ERREUR_SQL(SQLCOD,controle,*10,*10,*999,
         ,                'LISTE_SOUS_ENSEMBLE/SET TRANS')	
          ENDIF
    
    C[------------- RECHERCHE ENREGISTREMENT ------- -------------]
    11    EXEC SQL DECLARE CUR_SOUS_PLAN CURSOR FOR
         , SELECT SOUS_PLAN
         , FROM B2.SOUS_PLAN_NOMEN
         , WHERE N_NOMEN=:N_NOMEN AND REPERE>0
    
          EXEC SQL OPEN CUR_SOUS_PLAN
    20    EXEC SQL FETCH CUR_SOUS_PLAN INTO :SOUS_PLAN
          IF(SQLCOD.EQ.0)THEN
            CONTROLE.NB_RECORD_RDB=CONTROLE.NB_RECORD_RDB+1
            CONTROLE.EXISTE='O'                              ! ENREGIST EXISTANT
            IP=IP+1
            SOUS(IP)=SOUS_PLAN
            NIV(IP)=NIV_REF+1
    
             ICO=ICO+1
             DO IY=1,10
               IF(IC(L,IY).NE.0)IC(IP,IY)=IC(L,IY)
               IF(IC(L,IY).EQ.0)THEN
                  IC(IP,IY)=ICO
                  GO TO 20
               ENDIF
             ENDDO
            
            GO TO 20
            ELSE
            EXEC SQL CLOSE CUR_SOUS_PLAN
            L=L+1
            IF(L.GT.IP)GO TO 40
            N_NOMEN=SOUS(L)
            NIV_REF=NIV(L)
            ICO=0
            GO TO 11
          ENDIF
    
    C[------------- FIN DE TRANSACTION SI DEMANDEE -------------]
    40    CONTINUE
          DO I=1,IP
            WRITE(TOTO(I),'(10I2,A9,I2)')(IC(I,J),J=1,10),SOUS(I),NIV(I)
          ENDDO
          CALL TRIFC(TOTO,IP)
          DO I=1,IP
            READ(TOTO(I),'(20X,A9,I2)')SOUS(I),NIV(I)
          ENDDO
    
          EXEC SQL CLOSE CUR_SOUS_PLAN
          IF(CONTROLE.TRANSACTION.EQ.'O')THEN
            EXEC SQL COMMIT
            IF(SQLCOD.NE.0)CALL SYST_ERREUR_SQL(SQLCOD,controle,*10,*40,*999,
         ,                 'LISTE_SOUS_ENSEMBLE/COMMIT')	
          ENDIF
    
    999   RETURN
          END

Discussions similaires

  1. [SQL Server] Equivalent du if (MySQL) / decode (Oracle)
    Par Mr T dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2008, 11h52
  2. Equivalent de l'Analyze d'oracle pour Access ?
    Par tomy29 dans le forum Access
    Réponses: 8
    Dernier message: 29/11/2006, 12h04
  3. [Debutant] transactions sous Oracle
    Par Grand sorcier dans le forum Oracle
    Réponses: 3
    Dernier message: 14/06/2006, 16h18
  4. Réponses: 1
    Dernier message: 29/05/2006, 19h06
  5. Equivalent à TRUNC ou ROUND d'Oracle sur les Dates ?
    Par swirtel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/05/2005, 09h45

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