日期:2014-05-17  浏览次数:20477 次

select 和exec的问题,急
有个存储过程 返回值的
declare @Hours real
exec   @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours

有个select语句
select @begintime,@endtime

需要结果是
select @begintime,@endtime,@hours
把select的两个参数带进存储过程,显示返回的值

有没有大神可以解惑的...

------解决方案--------------------
例子:
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;

------解决方案--------------------
类似于这样:



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

returns @re table(                      --要返回的临时表
                     col varchar(1000)  --临时表中的列 
                 )
as
begin   
  declare @len int