Salut à tous.
J'ai crée la fonction utilisateur suivante dans ma base.
CREATE FUNCTION dbo.LibelleClient (@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE
@Lib varchar(200)
SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
RETURN @Lib
END
Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
clé.
Elle marche parfaitement, et je m'en sers trés souvent.
J'ai besoin d'utiliser la même fonction mais pour une table.
J'essaie de créer la fonction LibelleGlobal qui me semble être correcte mais
que je n'arrive pas à valider car j'ai le message suivant :
Erreur 137 : la variable @TableName doit être déclarée.
Si quelqu'un pourrait m'aider à faire une fonction plus général comme je le
souhaite, je le remercie d'avance.
Frédéric.
Salut à tous.
J'ai crée la fonction utilisateur suivante dans ma base.
CREATE FUNCTION dbo.LibelleClient (@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE
@Lib varchar(200)
SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
RETURN @Lib
END
Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
clé.
Elle marche parfaitement, et je m'en sers trés souvent.
J'ai besoin d'utiliser la même fonction mais pour une table.
J'essaie de créer la fonction LibelleGlobal qui me semble être correcte mais
que je n'arrive pas à valider car j'ai le message suivant :
Erreur 137 : la variable @TableName doit être déclarée.
Si quelqu'un pourrait m'aider à faire une fonction plus général comme je le
souhaite, je le remercie d'avance.
Frédéric.
Salut à tous.
J'ai crée la fonction utilisateur suivante dans ma base.
CREATE FUNCTION dbo.LibelleClient (@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE
@Lib varchar(200)
SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
RETURN @Lib
END
Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
clé.
Elle marche parfaitement, et je m'en sers trés souvent.
J'ai besoin d'utiliser la même fonction mais pour une table.
J'essaie de créer la fonction LibelleGlobal qui me semble être correcte mais
que je n'arrive pas à valider car j'ai le message suivant :
Erreur 137 : la variable @TableName doit être déclarée.
Si quelqu'un pourrait m'aider à faire une fonction plus général comme je le
souhaite, je le remercie d'avance.
Frédéric.
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto:brouardf@club-internet.fr ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto:brouardf@club-internet.fr ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto:brouardf@club-internet.fr ******************
Il n'est pas possible de passer en paramétre de requête un nom de table
de colonne etc...
En revanche tu peut faire cela dans du SQL Dynamique
Quelque chose comme :
CREATE FUNCTION LibelleGlobal (@TableName varchar(50),
@IdName varchar(50),
@IdValue int)
RETURNS varchar(200)
AS
BEGIN
DECLARE @Lib varchar(200)
DECLARE @query varchar(8000)
SET @query = 'SELECT @Lib = Libelle FROM ' + @TableName
+ ' WHERE '+ @IdName + ' = '+ @IdValue
EXEC (@query)
RETURN @Lib
END
A +
frederic.facca a écrit:
> Salut à tous.
> J'ai crée la fonction utilisateur suivante dans ma base.
>
> CREATE FUNCTION dbo.LibelleClient (@IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib = ( SELECT Libelle FROM CLIENT WHERE IdClientName = @IdValue )
> RETURN @Lib
> END
>
> Cette fonction renvoie le champ libelle d'un client lorsqu'on connait sa
> clé.
> Elle marche parfaitement, et je m'en sers trés souvent.
>
> J'ai besoin d'utiliser la même fonction mais pour une table.
> J'essaie de créer la fonction LibelleGlobal qui me semble être correcte
> que je n'arrive pas à valider car j'ai le message suivant :
> Erreur 137 : la variable @TableName doit être déclarée.
>
> CREATE FUNCTION dbo.LibelleGlobal (@TableName varchar(50), @IdName
> varchar(50), @IdValue int)
> RETURNS varchar(200)
> AS
> BEGIN
> DECLARE
> @Lib varchar(200)
> SET @Lib=''
> SET @Lib = ( SELECT Libelle FROM @TableName WHERE @IdName = @IdValue )
> RETURN @Lib
> END
>
> Si quelqu'un pourrait m'aider à faire une fonction plus général comme je
> souhaite, je le remercie d'avance.
>
> Frédéric.
>
>
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************