SQL dynamique de conversion d'erreur de type nvarchar à int

J'ai créé une procédure SQL dynamique qui a une instruction select et le code ressemble à:

ALTER PROCEDURE cagroup    (
@DataID INT ,
@days INT ,
@GName VARCHAR(50) ,
@T_ID INT ,
@Act BIT ,
@Key VARBINARY(16)
)
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX)
DECLARE @SchemaName SYSNAME
DECLARE @TableName SYSNAME
DECLARE @DatabaseName SYSNAME
DECLARE @BR CHAR(2)
SET @BR = CHAR(13) + CHAR(10)
SELECT  @SchemaName = Source_Schema ,
@TableName = Source_Table ,
@DatabaseName = Source_Database
FROM    Source
WHERE   ID = @DataID
SET @SQL =  'SELECT ' + @GName + ' AS GrName ,' + @BR
+ @T_ID + ' AS To_ID ,' + @BR
+ @DataID + ' AS DataSoID ,' + @BR
+ @Act + ' AS Active ,' + @BR
+ Key + ' AS key' + @BR
+ 'R_ID AS S_R_ID' + @BR
+ 'FROM' + @DatabaseName + '.'
+ @SchemaName + '.'
+ @TableName + ' t' + @BR
+ 'LEFT OUTER JOIN Gro g ON g.GName = '
+ @GName + @BR + 'AND g.Data_ID] =' + @DataID + @BR
+ 't.[I_DATE] > GETDATE() -' + @days + @BR
+ 'g.GName IS NULL
AND ' + @GName + ' IS NOT NULL
AND t.[Act] = 1' + @BR
PRINT (@SQL)
END

Quand je suis de l'exécution de cette procédure avec cette déclaration:

Exec  dbo.cagroup  1,10,'[Gro]',1,1,NULL

J'obtiens l'erreur suivante.

Msg 245, Niveau 16, État 1, Procedurecagroup, Ligne 33
Échec de la Conversion lors de la conversion de la valeur nvarchar 'SÉLECTIONNEZ [Gro] COMME GName ,
"pour le type de données int.

Où suis-je fais de mal?

Que le code soit ne fonctionne pas ou qu'il a été modifié à partir de code de travail à faire unworking. En particulier, @GName n'est pas déclarée comme autant que je peux dire, et en tout cas, ce morceau de code: ET' + @GName + " n'EST PAS NULL ne fonctionnera pas à moins que @GName a des espaces blancs à l'avant et à l'arrière.
Roux j'ai édité le code de ceux qui étaient seulement typo
quel est le besoin pour le dynamicness?
le tableau va changer en fonction de l' @DataID
pourquoi ne pas simplement créer un script qui génère de votre crud procédures et puis il suffit de l'exécuter? ayant le code généré sp sera beaucoup plus facile à entretenir que de créer dynamiquement des insertions et les sélectionne.

OriginalL'auteur | 2011-05-17