novembre
2011
Le SGBD ORACLE offre le package UTL_HTTP qui permet d’interroger directement une url. La principale application de ce mécanisme est la consommation de service web. De tel mécanisme permet par exemple de suivre et de gérer en temps réel dans une base de données la variation du taux de change Euros Dollars. Notons au passage que la conversion Euros Dollars fluctue de façon significative au cours d’une même journée. SQL Server (avec SSIS) offre des composants drag-and-drop pour consommer des services web, mais pas de fonction directement utilisable dans du T-SQL ! Il n’est donc pas possible dans une procédure T-SQL (sous SQL SERVER 2008R2) d’obtenir directement la conversion Euros-Dollars en interrogeant un web service public http://www.webservicex.net/currencyconvertor.asmx?op=ConversionRate ! Une idée ?
Une fonction CLR
=> Code C# (.NET Framework 2.0)
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString F_HTTP_GET(string url)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
// Credentials for request.
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream();
//stream reader with encoding format.
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
//readStream limit = 8000 octets
string result = readStream.ReadToEnd();
response.Close();
readStream.Close();
return result;
}
catch (Exception e)
{
e.Source.ToString();
e.Message.ToString();
return null;
}
}
};
=> Résultat
Notons que SQL Server permet de mettre à disposer des procédures stockées pour des webservices
Happy Query
————————–
Etienne ZINZINDOHOUE
————————–