Procedure stockee passage nom table en parametre(concatenation) [Résolu]

Messages postés
3
Date d'inscription
jeudi 19 août 2004
Dernière intervention
8 juillet 2008
- - Dernière réponse : roserose5000
Messages postés
17
Date d'inscription
samedi 11 février 2006
Dernière intervention
5 novembre 2008
- 23 oct. 2008 à 10:17
Bonjour,

je souhaite creer une procedure stockée dont un parametre est concatene avec le nom de la table, j'ai retourne le probleme dans tous les sens sans succès pour le moment.
Si quelqu'un a une idée merci d'avance.
Voila la procédure en question :
ALTER

PROCEDURE [GLF\PLEMAITRE]
.
[P_INT105_CHEK_NO_DOC] @OWNER

char(6
)=
'RI2DTA',
@NUM_FACT

char(8
) =
NULL,
@OUTPUT

int
OUTPUT
AS

BEGIN

SET

NOCOUNT
ON;
Declare

@requete
char(200
)
SET

NOCOUNT
ON;
Set

@requete
=
'SELECT count(*) FROM '
+
LTRIM(RTRIM(@OWNER
))
+
'.F0911Z1 WHERE VNR1 = '''
+ @NUM_FACT
+
''' AND VNEDUS LIKE ''INT105%''';
Set

@OUTPUT
=
''''
+
SUBSTRING(LTRIM(RTRIM(@requete
)), 1
,
LEN(LTRIM(RTRIM(@requete
)))
-1
)
+
''''
;
 

END

Lors de l'execution cote VB => erreur lors de la conversion du varchar "SELECT count(*) ..."  to data type int
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
17
Date d'inscription
samedi 11 février 2006
Dernière intervention
5 novembre 2008
3
Merci
C'est bon j'ai trouvé ! c'est mon variable @SQL qui n'etait pas assez long, du coup ca coupais ma requête !
Merci !!!

Merci roserose5000 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de roserose5000
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Salut,

Peux-tu expliqué un peu plus le problème.

Ton parametre inout n'est pas typé est-ce normal.

Tu n'executes pas la requete? (est-ce normal)

Si l'erreur est du coté vb ca serait interressant d'avoir ta methode qui plante.

NB : les parametres out sont renseigné apres la fermeture de la connexion.

Esperant que ca te guide.
Commenter la réponse de nhervagault
Messages postés
3
Date d'inscription
jeudi 19 août 2004
Dernière intervention
8 juillet 2008
0
Merci
Salut,
merci pour ta réponse.

J'ai solutionné mon problème comme ceci :

ALTER

PROCEDURE [GLF\PLEMAITRE]
.[P_INT105_RG4] @OWN_FU_CTL

char(5
)
=
NULL,@NUMCPT

char(3
)
=
NULLAS

BEGIN

SET
NOCOUNT
ON;

Declare @requete
char(200
);

Set @requete
=
'SELECT COUNT(*) AS NB FROM '
+ @OWN_FU_CTL
+'.F0005 WHERE DRSY ''58'' AND DRRT ''A1'' AND LTRIM(DRKY) ='''
+ @NUMCPT
+
'''';

execute
(@requete
);END

Mais j'ai abandonné l'idée de récupérer le résultat de => execute(@requete dans un paramètre de retour (qui était @OUTPUT int OUT).
Je ne sais pas faire, si tu as une idée je suis preneur.
Merci encore pour les infos. 
Commenter la réponse de yankele
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Tu as la meilleure solution a mon avis.

Tu peux meme faire du multiresultset dans la procédure stockée
--> n select qui sont retournée

Pour recuperer les parametres en output, il faut fermer la connexion et les recuperer apres.

Il faut au maximum eviter de faire du SQL à la volée comme tu fais. (probleme d'injection sql
de performance (pb de plan d'excution car la requete n'est pas fixe)

mais je n'ais pas d'idée pour solutionner plus le probleme

Voila.
Commenter la réponse de nhervagault
Messages postés
17
Date d'inscription
samedi 11 février 2006
Dernière intervention
5 novembre 2008
0
Merci
Bonjour,

J'ai un problème un peu similaire.

voici ma requête dans ma procédure stockée.
Declare @quantite_lot char(50)
DECLARE @SQL char(200)

SET @SQL = 'INSERT INTO dbo.Company1 SELECT  company_id, Rn_Descriptor, DUNS FROM company
WHERE duns in (SELECT top '+ @QUANTITE_LOT +'duns FROM company GROUP BY duns HAVING count(*) > '1' and
duns is not null) ORDER BY duns, company_id'


 


Exec (@SQL)

une fois que  j'execute , il me dit que il y a un probleme de syntax


 


 


Merci d'avance si vous avez une idée?






 
Commenter la réponse de roserose5000
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Salut

Evite de mettre des posts à la fin des anciens posts si tu veux avoir des réponses.

Il manque un espace.

Tu aurais testé ta requete en direct tu l'aurais trouvé

print @SQL

top '+ @QUANTITE_LOT +'[ESPACE]duns

Bon coding
Commenter la réponse de nhervagault
Messages postés
17
Date d'inscription
samedi 11 février 2006
Dernière intervention
5 novembre 2008
0
Merci
Merci de ta réponse.
Mais je l'ai bien testé un peu dans tout les sens.
J'ai plutot l'impression que c'est un problemede quote
il ne reconnais pas le reste de la requete apres [mailto:le@QUANTITE_LOT' le QUANTITE_LOT + '] 
Commenter la réponse de roserose5000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.