PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 27-11-2012 16:19:52

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

souci pour executer une procedure stockee sql server

Bonjour tout le monde!

Je vais droit au but,
J'ai une procedure stockee sql server et j'aimerai l'executer a partir du code pb
J'ai essaye ceci :

Declare proc_save for dbo.proc_save_db;
Execute proc_save;

Pas d'erreur de syntaxe mais rien ne se fait quand je lance le pgm!
Config: sql server 2005 et pb 10.0
Quelqu'un peut me dire comment faire svp!

Hors ligne

 

#2 27-11-2012 16:41:15

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: souci pour executer une procedure stockee sql server

Salut,

        Mais que fais ta procedure ?

        Est ce qu'elle est censé renvoyer un résultat  ou est ce qu'elle effectue simplement un traitement sur serveur et tu ne vois pas ce traitement  en final ?

       N'oublie pas les balises pour le code powerbuilder 

Cdt
Yanis

Hors ligne

 

#3 27-11-2012 16:45:13

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: souci pour executer une procedure stockee sql server

Bonjour,

que vaut  sqlca.sqlcode / sqlca.sqlerrtext juste après le EXECUTE ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#4 27-11-2012 19:35:29

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

Re: souci pour executer une procedure stockee sql server

Merci yanis et xlat,
Ma procedure stockee fait la sauvegrde d'une base de donnees. Elle fonctionne bien dans sql server et j'aimerais donner la possibilite de sauvegarde de ma bd a partir de l'application.

Voici le code :

Code: pb

declare proc_save_data procedure for dbo.proc_save_db;
Execute proc_save_data; 


Desole pour le manque d'accents et merci pour l'aide!

Dernière modification par omelia (27-11-2012 21:27:46)

Hors ligne

 

#5 28-11-2012 08:59:34

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: souci pour executer une procedure stockee sql server

Et en déclarant la procédure comme RPCFUNC dans les external functions comme si c'était une fonction d'une dll externe ?

Tu n'as pas indiqué si le sqlcode indiquait une erreur éventuelle après l'appel.


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#6 28-11-2012 09:14:35

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: souci pour executer une procedure stockee sql server

Salut,

tu as bien les droits pour executer cette procédure ?

y a t'il une transaction dans ta procédure ?
sinon, c'est du autocommit ? ou alors, il manque le commit et le rollback.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#7 28-11-2012 11:55:20

omelia  
Membre Geek
Date d'inscription: 19-04-2010
Messages: 20
Pépites: 109
Banque: 0

Re: souci pour executer une procedure stockee sql server

Seki, Je sais pas encore comment utiliser le RPCFunc et aussi l'execution n'indique aucune erreur sauf que le backup n'a pas lieu!

Pick out, dans ma procedure j'ai une bete commande de backup database et j'ai les autorisations necessaires.
Je sais pas si il y a un moyen simple d'executer ma proc stockee dans pb!

Merci de votre aide!

Hors ligne

 

#8 28-11-2012 13:57:49

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: souci pour executer une procedure stockee sql server

omelia a écrit:

Seki, Je sais pas encore comment utiliser le RPCFunc et aussi l'execution n'indique aucune erreur sauf que le backup n'a pas lieu!

Dans la fenêtre (ou le userobject) où tu essaies d'utiliser la procédure :
- onglet "declare instances variables" -> changer la combo "instances variables" par "local external functions" ("global external functions" peut aussi faire l'affaire, mais ça décare globalement dans l'objet application)
- ajoute une ligne du type

Code: pb

FUNCTION integer proc_save_data() RPCFUNC


Logiquement si c'est pas une fonction mais une procédure (pas de valeur de retour) il faudrait remplacer le "Function integer" par "Subroutine" mais je ne sais pas si ça s'applique aux appels RPC, je n'ai pas de base pour tester.

Pour info, la version longue de la déclaration permet d'appeler la fonction comme on veut avec un alias vers le vrai nom à la fin :

Code: pb

FUNCTION integer mon_nom_a_moi() RPCFUNC ALIAS FOR "proc_save_data"

The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#9 29-11-2012 14:10:34

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: souci pour executer une procedure stockee sql server

Bonjour,

      Si tu utilise la commande BACKUP pour SQL SERVER  celle ci n'est pas autorisée dans une transaction explicite ou implicite.

      Tu te trouve dans une transation implicite si ta propriété Autocommit=false dans Powerbuilder ( sqlca.Autocommit=False  équivalant en transac AU SET CHAINED ON).  C'est également la valeur par défaut pour Powerbuilder

      Tu te trouve dans une transaction explicite si par code tu effectue des BEGIN TRANSACTION.

     De plus comme l'avais justement demandé xlat si tu met un point d'arrêt juste après l'exec que vaut :       sqlca.sqlcode/sqlca.sqldbcode /sqlca.sqlerrtext
     Si l'erreur est celle d'une transaction active le message d'erreur devrait être clair.

     Pour palier à ce problème il suffit de mettre sqlca.autocommit=true   juste avant l'EXEC   et de la remettre à False tout de suite après

Cdt
yanis

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22