Accueil > Forum > > > > Retourner un parametre
Retourner un parametre
lundi 20 juillet 2009 à 16:42:38 |
Retourner un parametre

scottmat
|
bonjour à tous,
j'ai une table avec 2 champs Param1 de type nvarchar et Param2 de type datetime
je souhaiterai récupérer le dernier enregistrement de la table en filtrant l'élément Param1.
j'espère que vous m'avez compris :)
voici le code en vb déjà, qui fait appel à la fonction :
Using cn As New Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings.Item(0).ConnectionString)
Dim cmd As New Data.SqlClient.SqlCommand("Maprocedure1", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Param1", SqlDbType.NVarChar).Value = Profile.UserName
cmd.Parameters.Add("@Param2", SqlDbType.DateTime).Direction = ParameterDirection.Output
cn.Open()
Dim ret As Integer = ExecuteNonQuery(cmd)
Return CDate(cmd.Parameters("@Param2").Value)
End Using
Puis mon code SQL :
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Maprocedure1]
(
@Param1 nvarchar(256),
@Param2 datetime OUTPUT
)
AS
SET NOCOUNT ON
SELECT TOP (1) * FROM MaTable
WHERE ([Param1] = @Param1) ORDER BY [Param2] DESC
SET @Param2 = scope_identity()
mais il me dit "La conversion du type 'DBNull' en type 'Date' n'est pas valide."
l'erreur se produit au niveau de la ligne "Return CDate(cmd.Parameters("@Param2").Value)"
je me débrouille en sql mais je ne suis pas un expert non plus, j'ai modifié pas mal de truc sans arriver au résultat compté.
Bref, si quelqu'un à une idée :)
Merci par avance
|
|
lundi 20 juillet 2009 à 17:14:07 |
Re : Retourner un parametre

nivsql
|
Réponse acceptée !
A mon avis le probleme vient de la :
SET @Param2 = scope_identity()
vu que tu ne fais aucune insertion dans ton code je vois pas vraiment comment la fonction scope_identity() pourrait retourner autre chose que NULL !
Pour mémoire cette fonction retourne la derniere valeur identity (toute table confondue) incrémenté dans le scope (c'est a dire le périmetre) du code appelant ... vu que tu n'insert rien, aucune colone IDENTITY n'est incrémenté, donc la fonction renvoi NULL (que VB appel DBNull)
j'essayerais un truc dans ce style la :
SELECT TOP (1) @Param2 = [Param2] FROM MaTable
WHERE ([Param1] = @Param1) ORDER BY [Param2] DESC
et j'enleverais le SET qui suit le select et ne sert a rien.
|
|
lundi 20 juillet 2009 à 17:32:29 |
Re : Retourner un parametre

nivsql
|
Réponse acceptée !
J'ajouterais quelques petites remarques.
J'espere que tu utilise ce genre de requete dans le contexte d'une petite table sinon ton apply est bonne pour avoir des performance de merde, voir de plomber les perf de l'instance.
En effet ta requete lis tous les lignes de MaTable correspondant a @Param1, les tri (en mémoir s'il y'en a peu, dans TempDB s'il y en a beaucoup) et filtre le premier de la liste d'ordre. Cette requete en l'état est inoptimisable et plus il y aura de lignes dans MaTable plus les performances vont se degrader. Bref ce genre de synthaxe est a oublier.
Je te conseillerais d'utiliser uniquement du code pur SQL (donc pas la clause TOP qui est une fonction de fenetrage client) en réecrivant ta requete ainsi :
SELECT @Param2 = max([Param2]) FROM MaTable
WHERE ([Param1] = @Param1)
le resultat sera identique mais le moteur SQL le rendra differament, et si MaTable devait commencer a avoir un volume important, un index sur Param1, Param2 garantirais une stabilité des performances malgrés l'augmentation du nombre de ligne.
Cordiallement.
|
|
lundi 20 juillet 2009 à 17:40:11 |
Re : Retourner un parametre

scottmat
|
yes ! impeccable. j'avais essayé sans le SET et ca ne marcher pas.
j'ai essayer avec :
SELECT TOP (1) @Param2 = [Param2] FROM MaTable
WHERE ([Param1] = @Param1) ORDER BY [Param2] DESC
et c'est nickel
encore merci pour ton aide ;)
|
|
lundi 20 juillet 2009 à 17:42:32 |
Re : Retourner un parametre

nivsql
|
essaye sans le top et l'order by aussi ;) ton DBA te dira merci ;)
|
|
lundi 20 juillet 2009 à 17:44:09 |
Re : Retourner un parametre

scottmat
|
tu as bien fait de me préciser sa, car c'est une grosse table justement. j'ai effectué les modif' et en effet, même rendu.
Encore merci :)
|
|
Cette discussion est classée dans : type, cmd, param1, parameters, param2
Répondre à ce message
Sujets en rapport avec ce message
Requete SQL via Siebel [ par riri13 ]
Bonjour,Dans la société ou je travail nous utilisons Siebel surcouche d'oracle.Je dois faire des extraction de données pour le reporting mais je ne di
Trouver le type des champs de la Bdd [ par chris81 ]
bonojour,ya t'il un moyen de connaitre les attributs des champs de la base par exemple j'ai Id_User : intya t'il une requete qui me permettrait de me
CREATION DE TYPE TABLE [ par AABS ]
Bonjour tout le mondeje travaille sous SQL* Plus (de Oracle 8i)et j'ai fait les instructions suivantes:CREATE TYPE ADRESSE AS OBJECT (RUE CHAR(20),VIL
Comparaison VARCHAR/TEXT [ par Athalus ]
Bonjour,J'aurais voulu savoir s'il était possible de comparer des variables de type VARCHAR et des variables de type TEXT dans une requète ?J'utilise
somme... [ par cid019 ]
Salut,je souhaite réaliser une somme mais la je bloque un peu.en fait j'ai un type de personne.Pour chaque type de personne j'ai un champ CA. Et la je
Type fichier?? y en a?? [ par Fildomen ]
Salutje veux avoir une colonne où le type est bit mais sa valeur change selon la présence d'un fichier( existant = true, sinon false), est-ce-possible
If dans query [ par nborges ]
Hello,je voudrais savoir si je peux metre un IF dans une query ex:select ID,Descr, Type,if type='R' beginselect.... as Aselect... as Bendelse if type
Liaison [ par RM50Man ]
Est ce que sous mysql , il faut indiquer les liaisons entre les bases dans la requete par exemple WHERE ANNONCE.NUM_REGION = REGION.NUM_REGION AND ANN
probleme de requete imbriqué (aidez moi svp) [ par oxram ]
Bonjour voici ma requete ce qui ne passe pas semble etre le exept mais je vois pas pourquoi :SELECT CODE_LOC_MOBILE_HOME, LIB_TYPE_MH ,NBRE_PLACES ,
SP4 sur SQL Server génère erreurs dans SP [ par AngelJo ]
J'ai 3 stored procedures qui fonctionnaient tout à fait correctement jusqu'à l'application du SP4. Depuis elles génèrent une erreur et s'arrêtent. Ces
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ORACLE FORMSRE : ORACLE FORMS par csmahicham
Cliquez pour lire la suite par csmahicham
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|