web-dev-qa-db-fra.com

Comment prendre le nom de la table comme paramètre d'entrée dans la procédure stockée?

J'ai une petite procédure stockée ci-dessous.

Je prends le nom de la table comme paramètre d'entrée dans la procédure stockée afin que je prévois d'insérer les données dans la table temporaire et de les afficher. Ceci n'est qu'un petit bloc de code de la procédure stockée de mon projet.

Lorsque je compile ce qui suit, il considère le paramètre dans l'instruction select comme une variable de table et lance l'erreur comme:

Doit déclarer la variable de table "@TableName".

SQL:

CREATE PROCEDURE xyz @TableName Varchar(50) 
AS 
BEGIN 
SELECT TOP 10 * INTO #Temp_Table_One 
FROM @TableName 

SELECT * FROM #Temp_Table_One 
END
12
chandra sekhar
CREATE PROCEDURE xyz 
@TableName NVARCHAR(128) 
AS 
BEGIN 
  SET NOCOUNT ON;
  DECLARE @Sql NVARCHAR(MAX);

SET @Sql = N'SELECT TOP 10 * INTO #Temp_Table_One 
              FROM ' + QUOTENAME(@TableName)
          + N' SELECT * FROM #Temp_Table_One '

 EXECUTE sp_executesql @Sql

END
20
M.Ali

utiliser sql dynamic

essayer

CREATE PROCEDURE xyz @TableName Varchar(50) 
AS 
BEGIN 
 DECLARE @query
 set @query = 'SELECT TOP 10 * FROM '+ @TableName 
 EXEC @query
END

ajoutez le nom du schéma.

par exemple:

exec xyz @TableName = 'dbo.mytable'

exec xyz @TableName = 'myschema.mytable'

0
LuisR9