我在动态sql中创建了一个具有select语句的过程,代码如下所示:
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
当我使用此语句执行此过程时:
Exec dbo.cagroup 1,10,'[Gro]',1,NULL
我收到以下错误.
Msg 245,Level 16,State 1,Procedurecagroup,Line 33
Conversion Failed when converting the nvarchar value ‘SELECT [Gro] AS GName,
‘ to data type int.
我哪里做错了?