不管有无返回值,都可用TClientDataSet 的Commandtext传输SQL语句到服务器;
Commandtext:='exec 存储过程名 参数表’,这是最简单的了。。当然还有其他方法就是可以调用服务器端的TStoreProc进行调用

解决方案 »

  1.   

    SQLText="declare @NewID char(10) "
          " exec Proc_CheckID '"+_Bureau+"',@NewID output "
          " Select @NewID ";
          pDS->Close();
          pDS->CommandText=SQLText;
          pDS->Open();采用该方法可适合任何存户过程,即通用又方便,但是有些数据库不支持,没有返回值的你可以返回处理是否成功!
      

  2.   

    我的方法是:
          在服务器端定义一个TAdoStoredProc,指定对应sp,然后客户端通过一个TClientDataset来调用对应的TDatasetProvider,具体参数时要注意:
            1 方向(取决于sp的要求)
            2 顺序(服务器端先建,然后客户端自动生成)
      

  3.   

    还有一种是调用应用程序服务器端自定义的一个方法。传递的参数设置为一个variant数组,就可以了。
      

  4.   

    zygtp() 的方法我知道,taber(旺财,快来吃饭!) 的方法,我有点不清楚,由于是第一次做三层结构,有些思想还停留在c/s结构上,想到服务程序要为许多客户端服务,tclientdataset没有提供对存储过程的直接的方法。
      

  5.   

    tclientdataset没有提供对存储过程的直接的方法?
    不会啊,tclientdataset.CommandText就可以直接调用SQL StoreProc
      

  6.   

    taber(旺财,快来吃饭!) 能不能把你的方法说的清楚点呢?谢谢
      

  7.   

    其实我想做的,就是象c/s里那样的直接来控制TStoredProc,以前的系统几乎所有的复杂运算都做在了存储过程里了,现在要改用三层结构,不想从新做。
      

  8.   

    其实我想做的,就是象c/s里那样的直接来控制TStoredProc,以前的系统几乎所有的复杂运算都做在了存储过程里了,现在要改用三层结构,不想从新做。
      

  9.   

    其实我想做的,就是象c/s里那样的直接来控制TStoredProc,以前的系统几乎所有的复杂运算都做在了存储过程里了,现在要改用三层结构,不想从新做。