EXEC (@SQL)返回不了值,函数不能使用动态语句,所以改不了函数

解决方案 »

  1.   

    That's easy, just do like that:-- // Create temp table to save result
    CREATE TABLE #tblTemp (Result int)-- // Insert the result which gets from exec function
    INSERT INTO #tblTemp exec('SELECT 1 AS Result')-- // Display result
    SELECT * FROM #tblTemp
      

  2.   

    这样写:
    declare @SQL  nvarchar(1000)
    set @SQL='SELECT ' + @DAY  + ' FROM FixShift  where GroupCode='''+@GroupCode+''' and [Year]='+cast(year(@nDate) as varchar(4))+' and [Month]='+cast(month(@nDate) as varchar(2))
    exec sp_executesql @Sql,N'@DAY  int output',@DAY  output
      

  3.   

    Create Procedure GetMaxID
    @TableName varchar(100), @ID int output
    as
    begin
    declare @sql nvarchar(1000)
    set @sql='select @ID = max(ID) from '+@TableName
    exec sp_executesql @sql,N'@id int output',@id output
    end
    exec sp_executesql @sql,N'@id int output,@a ...',@id output...