例子:USE AdventureWorks2012;
  GO
  DECLARE @SQLString nvarchar(500);
  DECLARE @ParmDefinition nvarchar(500);
  DECLARE @SalesOrderNumber nvarchar(25);
  DECLARE @IntVariable int;
  SET @SQLString = N'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)
      FROM Sales.SalesOrderHeader
      WHERE CustomerID = @CustomerID';
  SET @ParmDefinition = N'@CustomerID int,
      @SalesOrderOUT nvarchar(25) OUTPUT';
  SET @IntVariable = 22276;
  EXECUTE sp_executesql
      @SQLString
      ,@ParmDefinition
      ,@CustomerID = @IntVariable
      ,@SalesOrderOUT = @SalesOrderNumber OUTPUT;
  -- This SELECT statement returns the value of the OUTPUT parameter.
  SELECT @SalesOrderNumber;
  -- This SELECT statement uses the value of the OUTPUT parameter in
  -- the WHERE clause.
  SELECT OrderDate, TotalDue
  FROM Sales.SalesOrderHeader
  WHERE SalesOrderNumber = @SalesOrderNumber;

解决方案 »

  1.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解
      

  2.   

    select begintime,endtime,dbo.aGetLeaveHours_return (begintime,endtime) hour from time
      

  3.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
      

  4.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
    我错了,是我写错了,是个存储过程
    不大想用游标,效率太低了,数据量比较大
      

  5.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
    我错了,是我写错了,是个存储过程
    不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
      

  6.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
    我错了,是我写错了,是个存储过程
    不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
    这样得到的@hours只是一个唯一值吧,现在是每一行的begintime和endtime都不一样,所以@hours没一行也不一样额,有具体语句可以参考吗
      

  7.   


    额,是我表达没清楚
    有张表select begintime,endtime from time
    然后有个返回值的函数
    declare @Hours real
    exec   @Hours=aGetLeaveHours_return @begintime,@endtime
    select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
    select begintime,endtime,@Hours from time
    已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
    我错了,是我写错了,是个存储过程
    不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
    这样得到的@hours只是一个唯一值吧,现在是每一行的begintime和endtime都不一样,所以@hours没一行也不一样额,有具体语句可以参考吗那就把存储过程改成函数把,函数可以返回多行记录,然后再和其他表关联的。
      

  8.   

    类似于这样:create function [dbo].[f_splitSTR]
    (
    @s varchar(8000),     --要分拆的字符串
    @split varchar(10)    --分隔字符

    returns @re table(                      --要返回的临时表
                         col varchar(1000)  --临时表中的列 
                     )
    as
    begin   
      declare @len int
      
      set @len = LEN(@split)      --分隔符不一定就是一个字符,可能是2个字符
      
      while CHARINDEX(@split,@s) >0
      begin
    insert into @re 
    values(left(@s,charindex(@split,@s) - 1))

    set @s = STUFF(@s,1,charindex(@split,@s) - 1 + @len ,'')    --覆盖:字符串以及分隔符
      end
      
      insert into @re values(@s)
      
      return   --返回临时表
    endGOselect *
    from dbo.f_splitSTR('a,b,c',',')
    /col
    a
    b
    c**/