Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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
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
Bonjour,
que vaut sqlca.sqlcode / sqlca.sqlerrtext juste après le EXECUTE ?
Hors ligne
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 :
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
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.
Hors ligne
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.
Hors ligne
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
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
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 :
FUNCTION integer mon_nom_a_moi() RPCFUNC ALIAS FOR "proc_save_data"
Hors ligne
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