Bonjour!
Comment pourrai-je écrire une procédure stockée de sql server à partir de windev et l'exécuter?
Bonjour!
Comment pourrai-je écrire une procédure stockée de sql server à partir de windev et l'exécuter?
A priori la création de procédures stockées se fait dans l'analyse (insertion >> Collection de procédures stockées). C'est le cas pour HF et je ne pense pas qu'il y ait de différence avec SQL serveur. L'aide donne cet exemple :
La manipulation s'effectue par HExécuteRequête en initialisant au préalable une source de données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE PROCEDURE MyProc(@p1 int, @p2 int, @res int output) AS select @res=@p1+@p2 return 2*@res
et les variables utilisées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaProc est une source de données
puis la procédure s'exécute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MaProc.p1 = 10 MaProc.p2 = 20
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SI HExécuteRequêteSQL(MaProc,"MaConnexion", ... hRequêteSansCorrection ,"MyProc @p1,@p2,@res out") ALORS Trace("res="+MaProc.res) Trace("p1="+MaProc.p1) Trace("p2="+MaProc.p2) Trace("return_value="+MaProc.return_value) SINON Erreur(HErreurInfo()) FIN
J'utilise la version 10 et dans le menu <Insertion> de l'analyse, j'ai pas de sous-menu <Collection de procédures stockées>
Bonjour
Je travail sur un projet où je vais chercher des informations d'une base(microsoft sql server), pour l'instant j'arrive à enregistrer toutes les valeurs de ma base de données vers un table. voici mon code:
Pour connaitre cette ligne de code, il faut que tu va sous sql server entreprise manager et tu va sur ta table clique droit de la souris, open table => query et la il te propose une ligne de code
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 PROCEDURE requete_selection_bdd() Sablier() LOCAL nCnx est un entier requete est une chaîne bResultat est un booléen nCnx = SQLConnecte("windev","","","FLINK","ODBC")//,"SQLOLEDB") SQLInfoGene() requete = "SELECT *, Date_1 AS Expr1, Temp_Entree AS Expr2, Temp_Chaud AS Expr3, Temp_Sortie AS Expr4, Recircul AS Expr5, Num_Phase AS Expr6, Phase AS Expr7, Lait AS Expr8, Jour AS Expr9, Sectime AS Expr10 FROM Archivage_P1 " bResultat = SQLExec(requete,"maRequete") SI bResultat=Faux ALORS Info("La consultation de la base a échouée!!") FIN TANTQUE SQLAvance("maRequete")=0 // SI tempsDebut..PartieHeure <=SQLLitCol("Date_1",1)<=tempsFin..PartieHeure ALORS //si SQLLitCol("maRequete",9)=requeteTempsDebut et SQLLitCol("maRequete",1)<conv_tempsdebut ou TableAjoute(TABLE_Table1,SQLLitCol("maRequete",1)+TAB+SQLLitCol("maRequete",2)+TAB+SQLLitCol("maRequete",3)+TAB+SQLLitCol("maRequete",4)+TAB+SQLLitCol("maRequete",5)+TAB+SQLLitCol("maRequete",6)+TAB+SQLLitCol("maRequete",7)+TAB+SQLLitCol("maRequete",8)+TAB+SQLLitCol("maRequete",9)+TAB+SQLLitCol("maRequete",10)) // FIN FIN SQLFerme("maRequete") SQLDéconnecte() Sablier(Faux)
il faut aussi eller dans panneau de configuration, outil administration => source de données ODBC => et la du doit rentrer quelques parametres dans "sources de données utilisateur" et "sources de données système
cordialement law56100
Bonjour,
Il me semble que la possibilité de créer des procédures stockées directement dans Windev n'est apparu qu'à partir de la version 11.
Il faut donc les créer dans SQL Server puis les exécuter grâce à SQLExec() ou HExécuteRequêteSQL().
Remarque pour law56100 :
En faisant SELECT * ... FROM Archivage_P1
tu sélectionnes déjà toutes les rubriques de ta table Archivage_P1.
Pourquoi rajoutes-tu Date_1 AS Expr1, Temp_Entree AS Expr2, Temp_Chaud AS Expr3... dans ta requête?
Si ce n'est que pour remplir ta table TABLE_Table1 avec le résultat de la requête, tu pouvais utiliser SQLTable().
en ce qui concerne l'accès à la base sql server et la manipulation des requêtes, je n'ai aucun problème. Par contre, ce qui m'inquiète ici, c'est les procédures stockées.
Si la procédure est créée au niveau de la base de données, n'est-il pas nécéssaire de l'importer dans l'analyse avant d'en faire usage? sinon, elle serait considérée comme un fichier inconnu.
En ce qui concerne l'import dans l'analyse de windev, seules les tables et les requêtes peuvent être importées.
Pas nécessairement, tu n'as pas besoin d'importer tes procédures stockées avant de les utiliser.
En utilisant SQLExec():
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLExec("execute maProcédure paramètre1, paramètre2.....", maRequete)
Pour HExécuteRequêteSQL(), dans l'aide tu as un exemple (en tapant en mot clé : procédures stockées)
Mais dans ton cas, je pense qu'il vaut mieux utiliser HExécuteRequêteSQL() car tu as sûrement dû définir une connexion quand tu as exporté ton analyse (donc pas besoin de te reconnecter à ta base de données). Si tu utilises SQLExec(), tu devras te reconnecter à ta base de données avec SQLConnecte().
Comme tu l'as bien dit, j'ai défini une connexion! donc j'ai utilisé HExécuteRequêteSQL(), et j'ai été pleinement satisfait.
Je pense qu'avec ça, je pourrai continuer mes recherches.
Vraiment, merci beaucoup à tous ceux qui ont participé à cette discussion, en particulier à toi Tasumy!!!
Partager