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
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
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'