en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en paramètres d'une requête.
Seule la partie affectable d'une expression mathématique de comparaison peut être paramétrée...
En revanche cela est possible en utilisant du SQL dynamique, mais c'est pas performant (pas de préparation).
A +
Michael a écrit:
Bonjour a tous,
je coince sur une requete qui pourtant me parait assez simple :
dans une proc Stock, je passe le nom de la table a attaquer en paramètres :
@strType varchar(20)
BEGIN SELECT numcontrat FROM @strType WHERE ident_client=@ident END
@strType, nom d'objet incorrect
pourtant strtype est bien alimenté...
Cela vous parle t'il ?
Michael.
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Michael
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1' SELECT numcontrat FROM TABLE1.... IF @strType ='TABLE2' SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" a écrit dans le message de news:
en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en
paramètres
d'une requête.
Seule la partie affectable d'une expression mathématique de comparaison
peut
être paramétrée...
En revanche cela est possible en utilisant du SQL dynamique, mais c'est
pas
performant (pas de préparation).
A +
Michael a écrit: > Bonjour a tous, > > je coince sur une requete qui pourtant me parait assez simple : > > dans une proc Stock, je passe le nom de la table a attaquer en
paramètres :
> > @strType varchar(20) > > BEGIN > SELECT numcontrat FROM @strType WHERE ident_client=@ident > END > > > @strType, nom d'objet incorrect > > pourtant strtype est bien alimenté... > > Cela vous parle t'il ? > > Michael. > > > >
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1'
SELECT numcontrat FROM TABLE1....
IF @strType ='TABLE2'
SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:ug2bM81YEHA.3476@tk2msftngp13.phx.gbl...
en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en
paramètres
d'une requête.
Seule la partie affectable d'une expression mathématique de comparaison
peut
être paramétrée...
En revanche cela est possible en utilisant du SQL dynamique, mais c'est
pas
performant (pas de préparation).
A +
Michael a écrit:
> Bonjour a tous,
>
> je coince sur une requete qui pourtant me parait assez simple :
>
> dans une proc Stock, je passe le nom de la table a attaquer en
paramètres :
>
> @strType varchar(20)
>
> BEGIN
> SELECT numcontrat FROM @strType WHERE ident_client=@ident
> END
>
>
> @strType, nom d'objet incorrect
>
> pourtant strtype est bien alimenté...
>
> Cela vous parle t'il ?
>
> Michael.
>
>
>
>
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1' SELECT numcontrat FROM TABLE1.... IF @strType ='TABLE2' SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" a écrit dans le message de news:
en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en
paramètres
d'une requête.
Seule la partie affectable d'une expression mathématique de comparaison
peut
être paramétrée...
En revanche cela est possible en utilisant du SQL dynamique, mais c'est
pas
performant (pas de préparation).
A +
Michael a écrit: > Bonjour a tous, > > je coince sur une requete qui pourtant me parait assez simple : > > dans une proc Stock, je passe le nom de la table a attaquer en
paramètres :
> > @strType varchar(20) > > BEGIN > SELECT numcontrat FROM @strType WHERE ident_client=@ident > END > > > @strType, nom d'objet incorrect > > pourtant strtype est bien alimenté... > > Cela vous parle t'il ? > > Michael. > > > >
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Patrice
La solution d'Aba est le "SQL dynamique" auquel Fred faisait alusion :
DECLARE @Table VARCHAR(64) SET @Table='Information_Schema.Tables' EXECUTE ('SELECT * FROM '+@Table)
Après l'intérêt est limité car la partie passée en paramètre après le EXECUTE devra être "compilée" à chaque fois.
--
"Michael" a écrit dans le message de news:
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1' SELECT numcontrat FROM TABLE1.... IF @strType ='TABLE2' SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" a écrit dans le message de news: > en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en paramètres > d'une requête. > > Seule la partie affectable d'une expression mathématique de comparaison peut > être paramétrée... > > En revanche cela est possible en utilisant du SQL dynamique, mais c'est pas > performant (pas de préparation). > > A + > > Michael a écrit: > > Bonjour a tous, > > > > je coince sur une requete qui pourtant me parait assez simple : > > > > dans une proc Stock, je passe le nom de la table a attaquer en paramètres : > > > > @strType varchar(20) > > > > BEGIN > > SELECT numcontrat FROM @strType WHERE ident_client=@ident > > END > > > > > > @strType, nom d'objet incorrect > > > > pourtant strtype est bien alimenté... > > > > Cela vous parle t'il ? > > > > Michael. > > > > > > > > > > -- > Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com > ************************ www.datasapiens.com ************************* >
La solution d'Aba est le "SQL dynamique" auquel Fred faisait alusion :
DECLARE @Table VARCHAR(64)
SET @Table='Information_Schema.Tables'
EXECUTE ('SELECT * FROM '+@Table)
Après l'intérêt est limité car la partie passée en paramètre après le
EXECUTE devra être "compilée" à chaque fois.
--
"Michael" <No-Spam-To-michael.hebert@assurance-juridique.fr> a écrit dans le
message de news:OEpPZo3YEHA.716@TK2MSFTNGP11.phx.gbl...
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1'
SELECT numcontrat FROM TABLE1....
IF @strType ='TABLE2'
SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:ug2bM81YEHA.3476@tk2msftngp13.phx.gbl...
> en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en
paramètres
> d'une requête.
>
> Seule la partie affectable d'une expression mathématique de comparaison
peut
> être paramétrée...
>
> En revanche cela est possible en utilisant du SQL dynamique, mais c'est
pas
> performant (pas de préparation).
>
> A +
>
> Michael a écrit:
> > Bonjour a tous,
> >
> > je coince sur une requete qui pourtant me parait assez simple :
> >
> > dans une proc Stock, je passe le nom de la table a attaquer en
paramètres :
> >
> > @strType varchar(20)
> >
> > BEGIN
> > SELECT numcontrat FROM @strType WHERE ident_client=@ident
> > END
> >
> >
> > @strType, nom d'objet incorrect
> >
> > pourtant strtype est bien alimenté...
> >
> > Cela vous parle t'il ?
> >
> > Michael.
> >
> >
> >
> >
>
> --
> Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ************************ www.datasapiens.com *************************
>
La solution d'Aba est le "SQL dynamique" auquel Fred faisait alusion :
DECLARE @Table VARCHAR(64) SET @Table='Information_Schema.Tables' EXECUTE ('SELECT * FROM '+@Table)
Après l'intérêt est limité car la partie passée en paramètre après le EXECUTE devra être "compilée" à chaque fois.
--
"Michael" a écrit dans le message de news:
Effectivement, la solution de Aba n'a pas fonctionnée...
en gros a par faire un truc du genre
If @strType ='TABLE1' SELECT numcontrat FROM TABLE1.... IF @strType ='TABLE2' SELECT numcontrat FROM TABLE2...
etc...
c'est cela ?
"Fred BROUARD" a écrit dans le message de news: > en aucun cas un nom d'objet (table, vue, colonne...) ne peut être en paramètres > d'une requête. > > Seule la partie affectable d'une expression mathématique de comparaison peut > être paramétrée... > > En revanche cela est possible en utilisant du SQL dynamique, mais c'est pas > performant (pas de préparation). > > A + > > Michael a écrit: > > Bonjour a tous, > > > > je coince sur une requete qui pourtant me parait assez simple : > > > > dans une proc Stock, je passe le nom de la table a attaquer en paramètres : > > > > @strType varchar(20) > > > > BEGIN > > SELECT numcontrat FROM @strType WHERE ident_client=@ident > > END > > > > > > @strType, nom d'objet incorrect > > > > pourtant strtype est bien alimenté... > > > > Cela vous parle t'il ? > > > > Michael. > > > > > > > > > > -- > Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com > ************************ www.datasapiens.com ************************* >