<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de dsr57 - Windev &#187; SYBASE</title>
	<atom:link href="https://blog.developpez.com/dsr57/pcategory/sybase/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/dsr57</link>
	<description>Blog sur l&#039;edi windev</description>
	<lastBuildDate>Thu, 04 Jun 2015 11:46:25 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Sybase : Procédures stockées</title>
		<link>https://blog.developpez.com/dsr57/p12636/windev-14/sybase-procedures-stockees</link>
		<comments>https://blog.developpez.com/dsr57/p12636/windev-14/sybase-procedures-stockees#comments</comments>
		<pubDate>Fri, 06 Jun 2014 20:30:56 +0000</pubDate>
		<dc:creator><![CDATA[dsr57]]></dc:creator>
				<category><![CDATA[Procédure stockée]]></category>
		<category><![CDATA[SYBASE]]></category>
		<category><![CDATA[Windev 14]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/dsr57/?p=281</guid>
		<description><![CDATA[Contexte du billet Windev : 14 Accès natif : Oui Base de données : Sybase Explications : appel d&#8217;une procédure stockée sur un serveur de base de données SYBASE Introduction Je viens d&#8217;être confronté à un problème, l&#8217;appel d&#8217;une procédure stockée sur un serveur SYBASE via un accès natif. Avant de commencer à coder l&#8217;ensemble du cahier des charges, je commence par écrire une simple procédure et à coder la communication entre WinDev et Sybase. [&#8230;]]]></description>
				<content:encoded><![CDATA[<h3>Contexte du billet</h3>
<p><u>Windev :</u> 14<br />
<u>Accès natif :</u> Oui<br />
<u>Base de données :</u> Sybase<br />
<u>Explications :</u> appel d&rsquo;une procédure stockée sur un serveur de base de données SYBASE</p>
<h3>Introduction</h3>
<p>Je viens d&rsquo;être confronté à un problème, l&rsquo;appel d&rsquo;une procédure stockée sur un serveur SYBASE via un accès natif. Avant de commencer à coder l&rsquo;ensemble du cahier des charges, je commence par écrire une simple procédure et à coder la communication entre WinDev et Sybase. La procédure effectue uniquement un INSERT. Code la procédure stockée :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">create procedure test (@ps_RglMepIdn int, @ps_datDeb date, @ps_datFin date)<br />
as<br />
begin<br />
&nbsp; &nbsp; insert into tmp values (@ps_RglMepIdn, @ps_datDeb, @ps_datFin) <br />
end</div></div>
<p>Procédure OK, maintenant la communication &#8230;. Premier réflexe, regarder l&rsquo;aide PC-SOFT. La documentation depuis la version 14 a très peu évoluée, vous pouvez la consulter à l&rsquo;adresse suivante :<br />
<a href="http://doc.pcsoft.fr/fr-FR/?acces-natif-sybase-recuperer-valeur-sortie-une-procedure-stockee-executee-sur-serveur" title="" target="_blank">http://doc.pcsoft.fr/fr-FR/?acces-natif-sybase-recuperer-valeur-sortie-une-procedure-stockee-executee-sur-serveur</a></p>
<h3>On suit la doc &#8230;</h3>
<p>Documentation avec un exemple, impeccable je reproduit l&rsquo;exemple, déclaration d&rsquo;une variable de type source de données et fonction HExécuteRequêteSQL. Une erreur est retournée (cf. image ci-dessous), Le problème semble de provenir d&rsquo;un problème de correspondance de type de variable. </p>
<p align="center"><img src="http://blog.developpez.com/dsr57/files/2014/06/erreurSybase.jpg" alt="Texte de l'erreur retournée" /></p>
<p>J&rsquo;ai amélioré l&rsquo;exemple pour prendre en charge la correspondance des variables sans succès, SYBASE reçoit les variables à NULL</p>
<p>Ci-dessous le code écrit d&rsquo;après la doc :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">li_test est un entier sur 4 octet<br />
ld_dateDeb est une Date<br />
ld_dateFin est une Date<br />
<br />
li_test=gt_LstRglMep[li_i][2]<br />
ld_dateDeb=gt_LstRglMep[li_i][3]<br />
ld_dateFin=gt_LstRglMep[li_i][4]<br />
&nbsp; &nbsp; <br />
maProc est une Source de Données<br />
maProc.ps_RglMepIdn=li_test<br />
maProc.ps_datDeb=ld_dateDeb<br />
maProc.ps_datFin=ld_dateFin<br />
<br />
&nbsp; &nbsp; <br />
SI PAS HExécuteRequêteSQL(maProc,connexion,hRequêteSansCorrection,&quot;test @ps_RglMepIdn, @ps_datDeb, @ps_datFin&quot;) ALORS<br />
&nbsp; &nbsp; &nbsp; &nbsp; Erreur(HErreurInfo(hErrComplet))<br />
FIN</div></div>
<p>Malgré de nombreuses tentatives, je n&rsquo;ai pas réussi à faire appel à une procédure stockée SYBASE en utilisant une variable de type sources de données. </p>
<h4>Une solution </h4>
<p>Une solution, déclarer une variable de type chaîne pour gérer l&rsquo;appel à la procédure stockée et modifier le paramètre &laquo;&nbsp;mode&nbsp;&raquo; de la fonction HExécuteRequêteSQL, celui-ci doit contenir les constantes : </p>
<li>hRequêteSansCorrection;</li>
<li>hSansBind.</li>
<p>Exemple de code :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SI PAS HExécuteRequêteSQL(&quot;ProcStock_MajEmp&quot;,connexion,hRequêteSansCorrection+hSansBind,&quot;test @ps_RglMepIdn=&quot;+gt_LstRglMep[li_i][2]+&quot;, @ps_datDeb='&quot;+gt_LstRglMep[li_i][3]+&quot;', @ps_datFin='&quot;+gt_LstRglMep[li_i][4]+&quot;' &quot;) ALORS<br />
&nbsp; &nbsp; &nbsp; &nbsp; Erreur(&quot;Erreur de l'exécution de la mise à jour des emplacements : &quot;+RC+HErreurInfo())<br />
FIN</div></div>
<h4>Conclusion</h4>
<p>Ce billet permet d&rsquo;apporter une solution pour appeler une procédure stockée SYBASE dans l&rsquo;EDI WinDev en version 14. La solution ne prend pas en compte si la procédure stockée retourne une valeur. Dans une prochain billet, j&rsquo;effectuerai un test sur la version 19 pour tenter de reproduire l&rsquo;exemple de la doc.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
