En inscrivant ma requete comme suivant, il m'indique que je dois activer et
désactiver les caractères ANSI !?
Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS
SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT
WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") )
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU'
)
GO
Ok j'ai trouvé la réponse facilement ! Mais je voudrais savoir ???
comment passer un argument à travers ma procédure stockée à la variable @RE_RFOU ??? Parce que je n'arrive pas a ressortir mes valeurs. Mon résultat s'affiche, mais vide. Et si j'enleve les " je n'arrive plus a sauvegarder ma procédure il me dit qu'il y a des erreurs. Comment faire ?
Ok j'ai trouvé la réponse facilement !
Mais je voudrais savoir ???
comment passer un argument à travers ma procédure stockée à la variable
@RE_RFOU ???
Parce que je n'arrive pas a ressortir mes valeurs. Mon résultat s'affiche,
mais vide.
Et si j'enleve les " je n'arrive plus a sauvegarder ma procédure il me dit
qu'il y a des erreurs.
Comment faire ?
Ok j'ai trouvé la réponse facilement ! Mais je voudrais savoir ???
comment passer un argument à travers ma procédure stockée à la variable @RE_RFOU ??? Parce que je n'arrive pas a ressortir mes valeurs. Mon résultat s'affiche, mais vide. Et si j'enleve les " je n'arrive plus a sauvegarder ma procédure il me dit qu'il y a des erreurs. Comment faire ?
Fred BROUARD
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
Il n'est pas possible de paramétrer une requête SQL en général.
Or ta requête :
SELECT GPRECEPT.RE_FOUR...
FROM GPRECEPT
va être exécutée sur le serveur lié de manière distante.
Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et
de filtrer dessus.
SELECT *
FROM (SELECT * FROM OPENQUERY
(NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU,
GPRECEPT.RE_CODE, GPRECEPT.RE_COMM,
GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE,
GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE,
GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT') T
WHERE GPRECEPT.RE_RFOU = @RE_RFOU"
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et
désactiver les caractères ANSI !?
Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS
SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT
WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") )
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU'
)
GO
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
aitoz
Ca ne fonctionne pas ! Peut etre qu'une formulation plus précise m'aiderais ;-)
merci
"Fred BROUARD" a écrit dans le message de news:
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
Ca ne fonctionne pas !
Peut etre qu'une formulation plus précise m'aiderais ;-)
merci
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
O3NIBsi2FHA.1572@TK2MSFTNGP10.phx.gbl...
Il n'est pas possible de paramétrer une requête SQL en général.
Or ta requête :
SELECT GPRECEPT.RE_FOUR...
FROM GPRECEPT
va être exécutée sur le serveur lié de manière distante.
Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table
locale et de filtrer dessus.
SELECT *
FROM (SELECT * FROM OPENQUERY
(NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU,
GPRECEPT.RE_CODE, GPRECEPT.RE_COMM,
GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE,
GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE,
GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT') T
WHERE GPRECEPT.RE_RFOU = @RE_RFOU"
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer
et désactiver les caractères ANSI !?
Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS
SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT
WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") )
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU'
)
GO
Ca ne fonctionne pas ! Peut etre qu'une formulation plus précise m'aiderais ;-)
merci
"Fred BROUARD" a écrit dans le message de news:
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
Thierry
Bonjour,
Ce ne sera pas très performant de faire comme celà. Il est possible de filtrer par paramètre une requête distribuée, mais il ne faut pas utiliser OPENQUERY().
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
-- Thierry
"Fred BROUARD" a écrit dans le message de news:
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
Bonjour,
Ce ne sera pas très performant de faire comme celà.
Il est possible de filtrer par paramètre une requête distribuée, mais il ne
faut pas utiliser OPENQUERY().
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM NOM_SERVEUR_LIE...GPRECEPT
WHERE GPRECEPT.RE_RFOU = @RE_RFOU
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
--
Thierry
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
O3NIBsi2FHA.1572@TK2MSFTNGP10.phx.gbl...
Il n'est pas possible de paramétrer une requête SQL en général.
Or ta requête :
SELECT GPRECEPT.RE_FOUR...
FROM GPRECEPT
va être exécutée sur le serveur lié de manière distante.
Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table
locale et de filtrer dessus.
SELECT *
FROM (SELECT * FROM OPENQUERY
(NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU,
GPRECEPT.RE_CODE, GPRECEPT.RE_COMM,
GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE,
GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE,
GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT') T
WHERE GPRECEPT.RE_RFOU = @RE_RFOU"
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer
et désactiver les caractères ANSI !?
Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS
SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE,
'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM GPRECEPT
WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") )
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU'
)
GO
Ce ne sera pas très performant de faire comme celà. Il est possible de filtrer par paramètre une requête distribuée, mais il ne faut pas utiliser OPENQUERY().
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
-- Thierry
"Fred BROUARD" a écrit dans le message de news:
Il n'est pas possible de paramétrer une requête SQL en général. Or ta requête : SELECT GPRECEPT.RE_FOUR... FROM GPRECEPT va être exécutée sur le serveur lié de manière distante. Il faut donc réaliser ce filtrage paramétré de manière locale.
Le plus simple est d'envoyer le résultat de la requête dans une table locale et de filtrer dessus.
SELECT * FROM (SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT') T WHERE GPRECEPT.RE_RFOU = @RE_RFOU" ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
GO
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
aitoz a écrit:
Bonjour,
En inscrivant ma requete comme suivant, il m'indique que je dois activer et désactiver les caractères ANSI !? Comment faire dans ma procédure stockée ?
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT * FROM OPENQUERY (NOM_SERVEUR_LIE, 'SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM GPRECEPT WHERE ( ( ( GPRECEPT.RE_RFOU)="@RE_RFOU") ) ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU' ) GO
aitoz
Quandje fais ça :
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le nom de la table.
Dois-je indiquer quelque chose autrement ?
Quandje fais ça :
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM NOM_SERVEUR_LIE...GPRECEPT
WHERE GPRECEPT.RE_RFOU = @RE_RFOU
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le
nom de la table.
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le nom de la table.
Dois-je indiquer quelque chose autrement ?
aitoz
Encore merci Thierry !
J'ai mis ta requete dans EM dans l'analyseur de requete et il l'a corrigé toute seule. Mainenant ca marche et bien. Puré merci parce que je commencais a perdre enormément de temps !
Voici la procédure stockée qui passe :
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi, re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht FROM Nomserveur...GPRECEPT GPRECEPT_1 WHERE (re_rfou = @RE_RFOU) ORDER BY re_four, re_rfou GO
Encore merci Thierry !
J'ai mis ta requete dans EM dans l'analyseur de requete et il l'a corrigé
toute seule.
Mainenant ca marche et bien.
Puré merci parce que je commencais a perdre enormément de temps !
Voici la procédure stockée qui passe :
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS
SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi,
re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht
FROM Nomserveur...GPRECEPT GPRECEPT_1
WHERE (re_rfou = @RE_RFOU)
ORDER BY re_four, re_rfou
GO
J'ai mis ta requete dans EM dans l'analyseur de requete et il l'a corrigé toute seule. Mainenant ca marche et bien. Puré merci parce que je commencais a perdre enormément de temps !
Voici la procédure stockée qui passe :
CREATE PROCEDURE ps_sgsa_suivifourrecep
@RE_RFOU VARCHAR(40)
AS SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi, re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht FROM Nomserveur...GPRECEPT GPRECEPT_1 WHERE (re_rfou = @RE_RFOU) ORDER BY re_four, re_rfou GO
Thierry
Il faut donner un alias dans le FROM.
FROM NOM_SERVEUR_LIE...GPRECEPT as GPRECEPT -- Thierry
"aitoz" a écrit dans le message de news:
Quandje fais ça :
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le nom de la table.
Dois-je indiquer quelque chose autrement ?
Il faut donner un alias dans le FROM.
FROM NOM_SERVEUR_LIE...GPRECEPT as GPRECEPT
--
Thierry
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
ecrcdaj2FHA.1416@TK2MSFTNGP09.phx.gbl...
Quandje fais ça :
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE,
GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI,
GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST,
GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE,
GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT
FROM NOM_SERVEUR_LIE...GPRECEPT
WHERE GPRECEPT.RE_RFOU = @RE_RFOU
ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le
nom de la table.
FROM NOM_SERVEUR_LIE...GPRECEPT as GPRECEPT -- Thierry
"aitoz" a écrit dans le message de news:
Quandje fais ça :
SELECT GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU, GPRECEPT.RE_CODE, GPRECEPT.RE_COMM, GPRECEPT.RE_LIGN, GPRECEPT.RE_ARTI, GPRECEPT.RE_DESI, GPRECEPT.RE_NBRE, GPRECEPT.RE_QRST, GPRECEPT.RE_UQTE, GPRECEPT.RE_CTVA, GPRECEPT.RE_PCDE, GPRECEPT.RE_UPRI, GPRECEPT.RE_PRHT FROM NOM_SERVEUR_LIE...GPRECEPT WHERE GPRECEPT.RE_RFOU = @RE_RFOU ORDER BY GPRECEPT.RE_FOUR, GPRECEPT.RE_RFOU
Il me dit error 107, il ne connait pas la table GPRECEPT ou l'alias ou le nom de la table.
Dois-je indiquer quelque chose autrement ?
aitoz
Mince !
J'ai encore un dernier probleme. Quand j'exécute la procédure stockée du serveur avec les paramètres, ca fonctionne très bien. Mais quand je lance mon application cliente, sur un poste du réseau avec le parametre il m'affiche une erreur system. Voici le code utilisé : Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
With Dc_SuiviFour .Connection = SqlConnection1 .CommandType = CommandType.StoredProcedure .CommandText = "ps_sgsa_suivifourrecep" End With
Da_SuiviFour.Fill(Ds_SuiviFour, "element1")
SqlConnection1.Close()
... etc....
Mince !
J'ai encore un dernier probleme.
Quand j'exécute la procédure stockée du serveur avec les paramètres,
ca fonctionne très bien.
Mais quand je lance mon application cliente, sur un poste du réseau avec le
parametre
il m'affiche une erreur system.
Voici le code utilisé :
Dim Dc_SuiviFour As New SqlClient.SqlCommand
Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour)
Dim Ds_SuiviFour As MyDataset17
Dim MyEtat As SGSA.SC_ST_SuiviRecFour
J'ai encore un dernier probleme. Quand j'exécute la procédure stockée du serveur avec les paramètres, ca fonctionne très bien. Mais quand je lance mon application cliente, sur un poste du réseau avec le parametre il m'affiche une erreur system. Voici le code utilisé : Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
J'ai encore un dernier probleme. Quand j'exécute la procédure stockée du serveur avec les paramètres, ca fonctionne très bien. Mais quand je lance mon application cliente, sur un poste du réseau avec le parametre il m'affiche une erreur system. Voici le code utilisé : Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
%23SUFqRk2FHA.2316@tk2msftngp13.phx.gbl...
Mince !
J'ai encore un dernier probleme.
Quand j'exécute la procédure stockée du serveur avec les paramètres,
ca fonctionne très bien.
Mais quand je lance mon application cliente, sur un poste du réseau avec
le parametre
il m'affiche une erreur system.
Voici le code utilisé :
Dim Dc_SuiviFour As New SqlClient.SqlCommand
Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour)
Dim Ds_SuiviFour As MyDataset17
Dim MyEtat As SGSA.SC_ST_SuiviRecFour
J'ai encore un dernier probleme. Quand j'exécute la procédure stockée du serveur avec les paramètres, ca fonctionne très bien. Mais quand je lance mon application cliente, sur un poste du réseau avec le parametre il m'affiche une erreur system. Voici le code utilisé : Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
With Dc_SuiviFour .Connection = SqlConnection1 .CommandType = CommandType.StoredProcedure .CommandText = "ps_sgsa_suivifourrecep" End With
Da_SuiviFour.Fill(Ds_SuiviFour, "element1")
SqlConnection1.Close()
... etc....
aitoz
Voici mon code en VB.NET :
'Définition de l'objet SqlCommand Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As New MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
'Ouverture de la connexion SqlConnection1.Open() Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T1", SqlDbType.VarChar, 40)).Value = T1 Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T2", SqlDbType.VarChar, 40)).Value = T2 With Dc_SuiviFour .Connection = SqlConnection1 .CommandType = CommandType.StoredProcedure .CommandText = "ps_sgsa_suivifourrecep" End With Da_SuiviFour.Fill(Ds_SuiviFour)ic
Et voici le code de ma procédure stockée :
ALTER PROCEDURE ps_sgsa_suivifourrecep @T1 VARCHAR(40), @T2 VARCHAR(40)
AS SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi, re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht FROM PFLEX...GPRECEPT GPRECEPT_1 WHERE (re_rfou BETWEEN @T1 AND @T2) ORDER BY re_four, re_rfou
J'ai une erreur systeme au moment ou je fais le FILL. Et je rappel que la procédure stockée fonctionne très bien quand je l'execute via le query manager. Elle fonoctionne très bien avec ces trois instructions :
Pour finir je rappel que je lance le programme sur un poste client.
Voici mon code en VB.NET :
'Définition de l'objet SqlCommand
Dim Dc_SuiviFour As New SqlClient.SqlCommand
Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour)
Dim Ds_SuiviFour As New MyDataset17
Dim MyEtat As SGSA.SC_ST_SuiviRecFour
'Ouverture de la connexion
SqlConnection1.Open()
Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T1",
SqlDbType.VarChar, 40)).Value = T1
Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T2",
SqlDbType.VarChar, 40)).Value = T2
With Dc_SuiviFour
.Connection = SqlConnection1
.CommandType = CommandType.StoredProcedure
.CommandText = "ps_sgsa_suivifourrecep"
End With
Da_SuiviFour.Fill(Ds_SuiviFour)ic
Et voici le code de ma procédure stockée :
ALTER PROCEDURE ps_sgsa_suivifourrecep
@T1 VARCHAR(40),
@T2 VARCHAR(40)
AS
SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi,
re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht
FROM PFLEX...GPRECEPT GPRECEPT_1
WHERE (re_rfou BETWEEN @T1 AND @T2)
ORDER BY re_four, re_rfou
J'ai une erreur systeme au moment ou je fais le FILL.
Et je rappel que la procédure stockée fonctionne très bien quand je
l'execute via le query manager.
Elle fonoctionne très bien avec ces trois instructions :
'Définition de l'objet SqlCommand Dim Dc_SuiviFour As New SqlClient.SqlCommand Dim Da_SuiviFour As New SqlClient.SqlDataAdapter(Dc_SuiviFour) Dim Ds_SuiviFour As New MyDataset17 Dim MyEtat As SGSA.SC_ST_SuiviRecFour
'Ouverture de la connexion SqlConnection1.Open() Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T1", SqlDbType.VarChar, 40)).Value = T1 Dc_SuiviFour.Parameters.Add(New SqlClient.SqlParameter("@T2", SqlDbType.VarChar, 40)).Value = T2 With Dc_SuiviFour .Connection = SqlConnection1 .CommandType = CommandType.StoredProcedure .CommandText = "ps_sgsa_suivifourrecep" End With Da_SuiviFour.Fill(Ds_SuiviFour)ic
Et voici le code de ma procédure stockée :
ALTER PROCEDURE ps_sgsa_suivifourrecep @T1 VARCHAR(40), @T2 VARCHAR(40)
AS SELECT re_four, re_rfou, re_code, re_comm, re_lign, re_arti, re_desi, re_nbre, re_qrst, re_uqte, re_ctva, re_pcde, re_upri, re_prht FROM PFLEX...GPRECEPT GPRECEPT_1 WHERE (re_rfou BETWEEN @T1 AND @T2) ORDER BY re_four, re_rfou
J'ai une erreur systeme au moment ou je fais le FILL. Et je rappel que la procédure stockée fonctionne très bien quand je l'execute via le query manager. Elle fonoctionne très bien avec ces trois instructions :