想在VB中取出最后句的结果,如果不用OUTPUT参数是否行
--   SELECT @gQ,@gWaitOutQ,@gWaitExec,@sgQ+@INpcs-@Outpcs
'我就想在VB中用
  Tsql = "exec CypQsoFolwINF " & g0 & "," & g1    
    Rs.Open Tsql, DBcn1
    Rs.NextRecordset
    Set vs1.DataSource = Rs
     Rs.Close
  如何做到,谢谢老师指点CREATE PROCEDURE CypQsoFolwINF
(@goodsid0 INT,
 @goodsid1 INT)
AS 
--查仓库库存,没考虑半成品料头仓
DECLARE @gQ NUMERIC(9,2)
SET @gQ=(SELECT SUM(QTY) qty FROM ONHAND WHERE GOODSID =@goodsid0)--5998 )--@goodsid)


--查待出仓   ---查某一货品,按销售发货单列出待出的货情况 
DECLARE @gWaitOutQ NUMERIC(9,2)
SET @gWaitOutQ=(SELECT sum(SS.QTY)-sum(ss.EXEOUTQTY) waitoutput 
                 FROM S_SENDD ss WHERE SS.GOODSID = @goodsid0  AND SS.QTY <> SS.EXEOUTQTY AND     ss.CANCELED=0 )--@goodsid)
--SELECT @gWaitOutQ  
----按货品代号查出没有执行销售订单(不包括 CANCEL 作废, stoped 中止)  
--来源cyPFindWaitExecSOBygoodsid  
DECLARE @gWaitExec NUMERIC(9,2)
SET  @gWaitExec =( sELECT sum(QTY)-sum(EXEQTY) WaitExec FROM S_ORDERd 
           WHERE EXEQTY< qty AND STOPED=0 AND canceled=0 AND  GOODSID =@goodsid0)--=5998 )--@goodsid)
--SELECT  @gWaitExec  


---从单据进出仓单中查出半成品个数数量
DECLARE @begintime DATETIME
DECLARE @INpcs int
DECLARE @sgQ INT
 
 SET @begintime= dbo.cyfQGoods2WipStartTime(@goodsid1)
 SET @SGQ=dbo.cyfQGoods2WipStartqty(@goodsid1)
 SET @INpcS=(SELECT SUM(cast(a1.USERDEF1 AS INT)) pcsqtyii FROM (SELECT a.*,ii.adate FROM  (sELECT BILLID, GOODSID, USERDEF1, STOREID
                                    FROM I_INSTORED 
                                    WHERE STOREID IN (2, 6) AND GOODSID = @goodsid1) a   
                               LEFT JOIN I_INSTORE ii  ON ii.BILLID= a.BILLID) a1 WHERE a1.adate> @begintime)

 --SELECT @INpcs                                      
 -- ---从单据进出仓单中查出半成品个数数量     
 DECLARE @Outpcs int
 SET @OUTpcS=(SELECT SUM(cast(a1.USERDEF1 AS INT)) pcsqtyii FROM (SELECT a.*,ii.adate FROM  (sELECT BILLID, GOODSID, USERDEF1, STOREID
                                    FROM I_OUTSTOREd
                                    WHERE STOREID IN (2, 6) AND GOODSID = @goodsid1) a 
      LEFT JOIN I_OUTSTORE ii  ON ii.BILLID= a.BILLID) a1 WHERE a1.adate> @begintime)
 --SELECT @Outpcs   SELECT @gQ,@gWaitOutQ,@gWaitExec,@sgQ+@INpcs-@Outpcs

解决方案 »

  1.   

    如果存储过程最后是以
    SELECT @gQ,@gWaitOutQ,@gWaitExec,@sgQ+@INpcs-@Outpcs
    导入处理结果的,那用不着带输出参数.因为,你调用存储过程后获得了只有一条记录的记录集.
    不过,一般不这样处理,而是将数据赋给变量后存储过程就结束了,这时就要用output.
      

  2.   

    下面是一个例子:
    myComm.CommandText = "authoradd"
    myComm.CommandType = adCmdStoredProc
    myComm.Parameters(1) = Val(Text1.Text)
    myComm.Parameters(2) = Text2.Text
    myComm.Parameters(3) = IIf(Option1.Value, 0, 1)
    myComm.Parameters(4) = CDate(Text3.Text)
    myComm.Parameters(5) = Text4.Text
    myComm.Parameters(6) = Text5.Text
    myComm.Parameters(7) = Text6.Text
    myComm.Parameters(8) = Text7.Text
    myComm.Parameters(9) = Text8.Text
    myComm.Parameters(10) = Text9.Text
    myComm.Parameters(11) = Check1.Value
    myComm.Execute
    returnmsg = myComm.Parameters(12)
      

  3.   

    传递到一个全局临时表
    SELECT @gQ,@gWaitOutQ,@gWaitExec,@sgQ+@INpcs-@Outpcs into ##temp