在ACCESS和ADO中:
sql="Create Procedure .....
那么
dbcn.Execute(sql)是否合法,能用?
怎样调用那个过程?

解决方案 »

  1.   

    第一个问题
    存储过程可以返回变量
    create procedure name
    @var1 int, output
    @var2 int output
    as
      select var1 = 1, var2 = 2也可以返回数据集create procedure name
    @var1 int, output
    @var2 int output
    as
      select var1 = 1, var2 = 2
      select * from tablename第二个问题
    在主表的触发器中生成第二个表第三个问题
      begin transaction
      insert a
      if @@Error <> 0 
      begin
        rollback transaction
        raiseerror('message', 16, 1)
        return
      end  insert b
      if @@Error <> 0 
      begin
        rollback transaction
        raiseerror('message', 16, 1)
        return
      end
      
      commit transction
      

  2.   

    如果想调试,可以用PRINT或者先放到变量里,最后:...
    select @Var1 as Var1,@Var2 as Var2...,@VarN as VarN
    go那样就返回了你的中间过程。或者,也可以返回多个记录集:...
    select ... 
    ...
    select ... 
    ...
    go
    这样返回两个记录集。关于ACCESS
      

  3.   

    关于ACCESS的问题,一定不行,
    在dbcn.Execute(sql)句出错!
      

  4.   

    关于第二个问题
    触发器并不能解决问题,因为你的两个表只有有不同数据的时候才有意义,在触发器里不能提供足够的信息。
    一般是用事务,在ADO里可以,在存储过程里也可以。