Conversion bigint

bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 7 août 2006 à 16:33
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 11 août 2006 à 14:55
bonjour,
est-il possible de convertir un paramètre passé dans une procédure stockée ? J'ai un varchar(50) que je voudrais convertir en bigint. 
merci pour votre aide...
A voir également:

5 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
7 août 2006 à 18:28
Oui c'est possible, les conversions sur SQL Server se font avec CAST (qui est un standard SQL) ou CONVERT (propre à SQL Server).

Voici le lien vers la documentation en ligne :
http://msdn2.microsoft.com/fr-fr/library/ms187928.aspx

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
8 août 2006 à 09:29
re,
voici ma procédure. J'ai toujours un pb de Error converting data type varchar to bigint. est-ce que je loupe quelque chose?


CREATE PROCEDURE UpdateRole  @wwid_pers varchar(50), @id_role bigint, @date_deb datetime, @date_exp datetime, @date_sup datetime,
     @id_form varchar(50), @nom_role varchar(50), @code_role varchar(50)
     
AS
 DECLARE @id_EN bigint
 SET @id_EN=CONVERT( bigint, @id_form )


 DECLARE @id_pers bigint
 SET @id_pers=(SELECT personne.id_pers FROM personne WHERE [mailto:wwid_pers=@wwid_pers wwid_pers=@wwid_pers])


 DECLARE @id_dem bigint
 DECLARE @var bigint
 
 DECLARE @nom_form varchar(50)
 SET @nom_form=(SELECT nom_form FROM formulaire WHERE [mailto:id_form=@id_EN id_form=@id_EN])
 
 DECLARE @nom_logi varchar(50)
 SET @nom_logi=(SELECT nom_logi FROM logiciel, formulaire WHERE formulaire.id_logi=logiciel.id_logi AND [mailto:formulaire.nom_form=@id_EN formulaire.nom_form=@id_EN])
 
 DECLARE @nom_serv varchar(50)
 SET @nom_serv=(SELECT nom_serv FROM service, formulaire WHERE formulaire.id_serv=service.id_serv AND [mailto:formulaire.nom_form=@id_EN formulaire.nom_form=@id_EN])


 
 SET @var=(SELECT DISTINCT id_dem FROM table_virtuel)
 if(@var is NULL)
  SET @id_dem=((SELECT MAX(id_dem) FROM [demande])+1)
 else
  SET @id_dem=@var
  
 if (@date_exp>@date_deb OR @date_exp=NULL)
 begin
  UPDATE etre_attribue
  SET [mailto:date_exp=@date_exp date_exp=@date_exp], [mailto:id_dem=@id_dem id_dem=@id_dem]
  WHERE( [mailto:id_pers=@id_pers id_pers=@id_pers] AND [mailto:id_role=@id_role id_role=@id_role])
  
  if(@id_role NOT IN (select id_role from table_virtuel))
   INSERT INTO table_virtuel(date_exp, id_role, id_dem, nom_form, nom_logi, nom_serv, nom_role, code_role)
   VALUES(@date_exp, @id_role, @id_dem, @nom_form, @nom_logi, @nom_serv, @nom_role, @code_role)
  else
   UPDATE table_virtuel
   SET [mailto:date_exp=@date_exp date_exp=@date_exp], [mailto:date_sup=@date_sup date_sup=@date_sup], [mailto:id_dem=@id_dem id_dem=@id_dem], [mailto:nom_form=@nom_form nom_form=@nom_form], [mailto:nom_logi=@nom_logi nom_logi=@nom_logi],
     [mailto:nom_serv=@nom_serv nom_serv=@nom_serv], [mailto:nom_role=@nom_role nom_role=@nom_role], [mailto:code_role=@code_role code_role=@code_role]
   WHERE [mailto:id_role=@id_role id_role=@id_role]
 end
 
 if(@date_sup>@date_deb )
 begin
  UPDATE etre_attribue
  SET [mailto:date_sup=@date_sup date_sup=@date_sup], [mailto:id_dem=@id_dem id_dem=@id_dem]
  WHERE( [mailto:id_pers=@id_pers id_pers=@id_pers] AND [mailto:id_role=@id_role id_role=@id_role])


  if(@id_role NOT IN (select id_role from table_virtuel))
   INSERT INTO table_virtuel(date_sup, id_role, id_dem, nom_form, nom_logi, nom_serv, nom_role, code_role)
   VALUES(@date_sup, @id_role, @id_dem, @nom_form, @nom_logi, @nom_serv, @nom_role, @code_role)
  else
   UPDATE table_virtuel
   SET [mailto:date_exp=@date_exp date_exp=@date_exp], [mailto:date_sup=@date_sup date_sup=@date_sup], [mailto:id_dem=@id_dem id_dem=@id_dem], [mailto:nom_form=@nom_form nom_form=@nom_form], [mailto:nom_logi=@nom_logi nom_logi=@nom_logi],
     [mailto:nom_serv=@nom_serv nom_serv=@nom_serv], [mailto:nom_role=@nom_role nom_role=@nom_role], [mailto:code_role=@code_role code_role=@code_role]
   WHERE [mailto:id_role=@id_role id_role=@id_role]
 end
GO
0
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
8 août 2006 à 12:54
J'ai fait un test juste avec cette portion :
DECLARE

@id_form
varchar(50
)
SET @id_form
=
'123'
DECLARE @id_EN
bigint
SET @id_EN
=CONVERT(
bigint, @id_form
)

PRINT @id_EN
Et cela fonctionne... A mon av:is celà vient de ce qu'il y a dans la chaîne @id_form
N'y aurait il pas autre chose que des chiffres ?

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
8 août 2006 à 14:49
crilun
ta chaine contient peut etre des espaces,
regarde du coté de ltrim et rtrim de maniere a supprimer tes esapces avant de tenter ta convertion.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
11 août 2006 à 14:55
en fait je recupere @id_form de @id_form=session["id_form"]; ca doit venir de la. pour finir j'ai abandonné l'idee de la session, je me suis rendue compte que ca ne me servbait pas.  merci à vous !
0
Rejoignez-nous