exec 纠结的有关问题,高手们来

exec 纠结的问题,高手们来!exec aaaa x,y返回一张表如col1 col2 col3 .....现在需要在另一个存储过程A

exec 纠结的问题,高手们来!


exec aaaa 'x','y' 返回一张表如

col1 col2 col3 ..
...



现在需要在另一个存储过程A 里调用并写入A存储过程里 临时表里。

如何编写?

INSERT TEMP (COL1) VALUES ???

EXEC aaaa 'x','y'

[解决办法]

SQL code
INSERT TEMP (COL1,col2,col3,...)EXEC aaaa 'x','y'
[解决办法]
SQL code
第一种方法: 使用output参数USE AdventureWorks;GOIF OBJECT_ID ( 'Production.usp_GetList', 'P' ) IS NOT NULL     DROP PROCEDURE Production.usp_GetList;GOCREATE PROCEDURE Production.usp_GetList @product varchar(40)     , @maxprice money     , @compareprice money OUTPUT    , @listprice money OUTAS    SELECT p.name AS Product, p.ListPrice AS 'List Price'    FROM Production.Product p    JOIN Production.ProductSubcategory s       ON p.ProductSubcategoryID = s.ProductSubcategoryID    WHERE s.name LIKE @product AND p.ListPrice < @maxprice;-- Populate the output variable @listprice.SET @listprice = (SELECT MAX(p.ListPrice)        FROM Production.Product p        JOIN  Production.ProductSubcategory s           ON p.ProductSubcategoryID = s.ProductSubcategoryID        WHERE s.name LIKE @product AND p.ListPrice < @maxprice);-- Populate the output variable @compareprice.SET @compareprice = @maxprice;GO另一个存储过程调用的时候:Create Proc TestasDECLARE @compareprice money, @cost money EXECUTE Production.usp_GetList '%Bikes%', 700,     @compareprice OUT,     @cost OUTPUTIF @cost <= @compareprice BEGIN    PRINT 'These products can be purchased for less than     $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'ENDELSE    PRINT 'The prices for all products in this category exceed     $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'第二种方法:创建一个临时表create proc GetUserNameasbegin    select 'UserName'endCreate table #tempTable (userName nvarchar(50))insert into #tempTable(userName)exec GetUserNameselect #tempTable--用完之后要把临时表清空drop table #tempTable--需要注意的是,这种方法不能嵌套。例如:  procedure   a     begin         ...         insert   #table   exec   b     end         procedure   b     begin         ...         insert   #table    exec   c         select   *   from   #table       end         procedure   c     begin         ...         select   *   from   sometable     end  --这里a调b的结果集,而b中也有这样的应用b调了c的结果集,这是不允许的,--会报“INSERT EXEC 语句不能嵌套”错误。在实际应用中要避免这类应用的发生。第三种方法:声明一个变量,用exec(@sql)执行:1);EXEC 执行SQL语句declare @rsql varchar(250)        declare @csql varchar(300)        declare @rc nvarchar(500)        declare @cstucount int        declare @ccount int        set @rsql='(select Classroom_id from EA_RoomTime where zc='+@zc+' and xq='+@xq+' and T'+@time+'=''否'') and ClassroomType=''1'''        --exec(@rsql)        set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '        set @rc=@csql+@rsql        exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--将exec的结果放入变量中的做法        --select @csql+@rsql        --select @cstucount本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2009/09/23/4584118.aspx
[解决办法]
探讨

问题是
Create table #tempTable (userName nvarchar(50))
insert into #tempTable(userName)
exec GetUserName --这里有很多列比如30列。但我只取 其中的 几列插入临时表。
不想全部写入临时表

[解决办法]
有,在 aaaa 中别弄那么多列,或者直接在 aaaa 里插入你的临时表.